{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## ThinkDSP\n",
    "\n",
    "This notebook contains code examples from Chapter 7: Discrete Fourier Transform\n",
    "\n",
    "Copyright 2015 Allen Downey\n",
    "\n",
    "License: [Creative Commons Attribution 4.0 International](http://creativecommons.org/licenses/by/4.0/)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Get thinkdsp.py\n",
    "\n",
    "import os\n",
    "\n",
    "if not os.path.exists('thinkdsp.py'):\n",
    "    !wget https://github.com/AllenDowney/ThinkDSP/raw/master/code/thinkdsp.py"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "from thinkdsp import decorate\n",
    "PI2 = 2 * np.pi"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "# suppress scientific notation for small numbers\n",
    "np.set_printoptions(precision=3, suppress=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Complex sinusoid\n",
    "\n",
    "Here's the definition of ComplexSinusoid, with print statements to display intermediate results."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "from thinkdsp import Sinusoid\n",
    "\n",
    "class ComplexSinusoid(Sinusoid):\n",
    "    \"\"\"Represents a complex exponential signal.\"\"\"\n",
    "    \n",
    "    def evaluate(self, ts):\n",
    "        \"\"\"Evaluates the signal at the given times.\n",
    "\n",
    "        ts: float array of times\n",
    "        \n",
    "        returns: float wave array\n",
    "        \"\"\"\n",
    "        print(ts)\n",
    "        phases = PI2 * self.freq * ts + self.offset\n",
    "        print(phases)\n",
    "        ys = self.amp * np.exp(1j * phases)\n",
    "        return ys"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Here's an example:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.   0.25 0.5  0.75]\n",
      "[1.    2.571 4.142 5.712]\n",
      "[ 0.324+0.505j -0.505+0.324j -0.324-0.505j  0.505-0.324j]\n"
     ]
    }
   ],
   "source": [
    "signal = ComplexSinusoid(freq=1, amp=0.6, offset=1)\n",
    "wave = signal.make_wave(duration=1, framerate=4)\n",
    "print(wave.ys)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The simplest way to synthesize a mixture of signals is to evaluate the signals and add them up."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "from thinkdsp import SumSignal\n",
    "\n",
    "def synthesize1(amps, freqs, ts):\n",
    "    components = [ComplexSinusoid(freq, amp)\n",
    "                  for amp, freq in zip(amps, freqs)]\n",
    "    signal = SumSignal(*components)\n",
    "    ys = signal.evaluate(ts)\n",
    "    return ys"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Here's an example that's a mixture of 4 components."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0. 0. 0. ... 1. 1. 1.]\n",
      "[  0.      0.057   0.114 ... 628.148 628.205 628.262]\n",
      "[0. 0. 0. ... 1. 1. 1.]\n",
      "[   0.       0.114    0.228 ... 1256.295 1256.409 1256.523]\n",
      "[0. 0. 0. ... 1. 1. 1.]\n",
      "[   0.       0.171    0.342 ... 1884.443 1884.614 1884.785]\n",
      "[0. 0. 0. ... 1. 1. 1.]\n",
      "[   0.       0.228    0.456 ... 2512.59  2512.818 2513.046]\n",
      "[1.   +0.j    0.995+0.091j 0.979+0.18j  ... 0.953-0.267j 0.979-0.18j\n",
      " 0.995-0.091j]\n"
     ]
    }
   ],
   "source": [
    "amps = np.array([0.6, 0.25, 0.1, 0.05])\n",
    "freqs = [100, 200, 300, 400]\n",
    "framerate = 11025\n",
    "\n",
    "ts = np.linspace(0, 1, framerate, endpoint=False)\n",
    "ys = synthesize1(amps, freqs, ts)\n",
    "print(ys)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now we can plot the real and imaginary parts:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "n = 500\n",
    "plt.plot(ts[:n], ys[:n].real)\n",
    "plt.plot(ts[:n], ys[:n].imag)\n",
    "decorate(xlabel='Time')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The real part is a mixture of cosines; the imaginary part is a mixture of sines.  They contain the same frequency components with the same amplitudes, so they sound the same to us:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "                <audio  controls=\"controls\" >\n",
       "                    <source src=\"data:audio/wav;base64,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\" type=\"audio/wav\" />\n",
       "                    Your browser does not support the audio element.\n",
       "                </audio>\n",
       "              "
      ],
      "text/plain": [
       "<IPython.lib.display.Audio object>"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from thinkdsp import Wave\n",
    "\n",
    "wave = Wave(ys.real, framerate)\n",
    "wave.apodize()\n",
    "wave.make_audio()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "                <audio  controls=\"controls\" >\n",
       "                    <source src=\"data:audio/wav;base64,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\" type=\"audio/wav\" />\n",
       "                    Your browser does not support the audio element.\n",
       "                </audio>\n",
       "              "
      ],
      "text/plain": [
       "<IPython.lib.display.Audio object>"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "wave = Wave(ys.imag, framerate)\n",
    "wave.apodize()\n",
    "wave.make_audio()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We can express the same process using matrix multiplication."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "def synthesize2(amps, freqs, ts):\n",
    "    args = np.outer(ts, freqs)\n",
    "    M = np.exp(1j * PI2 * args)\n",
    "    ys = np.dot(M, amps)\n",
    "    return ys"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "And it should sound the same."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[1.   +0.j    0.995+0.091j 0.979+0.18j  ... 0.953-0.267j 0.979-0.18j\n",
      " 0.995-0.091j]\n"
     ]
    }
   ],
   "source": [
    "amps = np.array([0.6, 0.25, 0.1, 0.05])\n",
    "ys = synthesize2(amps, freqs, ts)\n",
    "print(ys)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "                <audio  controls=\"controls\" >\n",
       "                    <source src=\"data:audio/wav;base64,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\" type=\"audio/wav\" />\n",
       "                    Your browser does not support the audio element.\n",
       "                </audio>\n",
       "              "
      ],
      "text/plain": [
       "<IPython.lib.display.Audio object>"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "wave = Wave(ys.real, framerate)\n",
    "wave.apodize()\n",
    "wave.make_audio()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "To see the effect of a complex amplitude, we can rotate the amplitudes by 1.5 radian:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAagAAAEYCAYAAAAJeGK1AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAAB4B0lEQVR4nO29d5hkV3nw+TtV1dWhOlbnnpxzkDQa5YhyQIAJwphgG8vYYMy33rW9n3dt/K2//VibXWMMhg8DBoOREEaAwmgUR2GSZkbS5NQ9PZ1zzhXP/nHqdtf0VLi36lZ3hft7nn6qu+reU7dP1X3f88YjpJRYWFhYWFikG7bFvgALCwsLC4tIWArKwsLCwiItsRSUhYWFhUVaYikoCwsLC4u0xFJQFhYWFhZpiWOxLyARqqqq5MqVKxf7MiwsLCwsTODdd98dkFJWz38+IxXUypUrOXbs2GJfhoWFhYWFCQghWiM9b7n4LCwsLCzSEktBWVhYWFikJZaCsrCwsLBISywFZWFhYWGRllgKysLCwsIiLbEUlIWFhYVFWmKKghJC/FAI0SeEOB3ldSGE+KYQokkIcVIIcW3Yaw8IIS6EXvtLM67HwsLCwiLzMcuC+hHwQIzXHwTWhX6eAL4DIISwA98Ovb4Z+KQQYrNJ12RhYWFhkcGYoqCklG8BQzEOeQz4d6k4DJQLIeqB3UCTlLJZSukFngodmzKklPztc2d45r2OVL5NVjDl9fP1ly7wXtvwYl9K2tMxPMW39zVxqmN0sS8l7WkZmOTv956ne3R6sS8l7Xm/bZh/eOk8M77AYl/KorBQMaglQHvY3x2h56I9fxVCiCeEEMeEEMf6+/sTvhCPP8iFnnH+7BcnONoSS6dafO3F83xrXxO/9Z2D9I3PLPblpDX/9Ven+YeXLvDHP3sXrz+42JeTtvgDQT71/Xf4lzcu8ZWnjmNtmBqdvrEZPvbdQ3x73yX+z19HjJ5kPQuloESE52SM569+UsrvSSl3SSl3VVdf1bJJNwV5dr7/2V24nA5+caw9/gkJ8swzz/DlL3/Z1DH37t3Lhg0bWLt2LV/72tdMHXs+U14/Tx1tZ9eKCqSEp4+mbq4ynQs947x1sZ/dK920D02z90zPYl9S2vL6+T46R6a5fmUF71we4mLvxGJfUtry7Iku/EHJjavdPHeyiwmPf7EvacFZKAXVASwL+3sp0BXj+ZRS5HRw35Za9p7uIRBMzQru/fff59prr41/oE4CgQBf/OIXefHFFzl79ixPPvkkZ8+eNW38+RxsGsTrD/KVe9Zz7fJyXj3Xl7L3ynTeblQW/Tce30lZYR77GxO38LOdV8/1UlaYxzcevwaA1873LvIVpS97TnWzpaGUP7tvAzO+IPvO5949uFAK6lngM6FsvhuBUSllN3AUWCeEWCWEcAKPh45NObeurWJsxk9Tn7kruIsXL3LvvffyjW98g69+9at84xvfMGXcI0eOsHbtWlavXo3T6eTxxx/nN7/5jSljR2J/0wCFeXauX1XB7lWVnOkaZdqbm37weBxoGmB1tYuG8kJuWl3JgaZBy3UVhWOtw+xaUcGS8kI215eyv3FgsS8pLfH4A5zqHOXWdVVcs6ycwjw777bmXizYlG7mQogngTuBKiFEB/A3QB6AlPK7wB7gIaAJmAJ+N/SaXwjxJeAlwA78UEp5Jtnr+dvnznC2ayzmMVrQ8Y9++i7VJflxx9zcUMrfPLol5jEej4ePf/zj/OQnP+Gxxx7j4MGDbN68mS984QsUFBREPe+2225jfHz8que//vWvc8899wDQ2dnJsmVzxubSpUt555134l53opzpGmVzQyn5DjvXr6zgu29KTnSMcOPqypS9ZyYipeT99hEe2FIHwO5Vbvae6aF/3ENNafTPPBcZnPDQ3D/Jx65T3+Mdy8rZc6obKSVCRPL25y7nusfxBSQ7l5bjsNvYtqSMkx0ji31ZC44pCkpK+ck4r0vgi1Fe24NSYAtKQZ4du4AJj1+XgtLDK6+8wo4dO2hoaKC0tJS6ujoKCgoIBAJ89rOfxel0cuedd/KpT33qivPefvvtuGNHWpGn6qYOBiVnu8b4reuWAkqQAJzpGrMU1Dx6xzyMTPnYVF8KMPt4vmfcUlDzONetFmE7lpYBsKWhlCePtNE5Ms3SiqLFvLS0Q1NG2r23Y1kZPz7Uii8QJM+eO/0VMnI/qHjEs3Q0Pv7dQwSl5Od/eJMp73v8+HG2bdvGiRMn2L59O319fZSUlPDMM8/w0Y9+lEcffZRPfOITVykoPRbU0qVLaW+fS1To6OigoaHBlOueT9vQFJPeAFsblCCpdDmpKMqjqe/qa8x1zvcoS31DXQkAG0OPF3rGuX194sk82Uhj6PuzrlbN0ZYGpcxPd45ZCmoe53vGKSvMo75MLXI2N5Ti9QdpHZxkbU3JIl/dwpGVCkova2pcvHTGvCBtaWkpJ0+exOFwsH37dv7mb/6GL37xi3R0dLBt2zYA7Hb7VefpsaCuv/56GhsbuXz5MkuWLOGpp57iZz/7mWnXHk5jKC63PiRshRCsqy2h0cq4uooLPUroaoqpwuWkpiSfcz2xXcy5SGPfBOVFeVQVOwFYH1JUl/qt79V8mvsnWFPtmvWSrK4qBuBSf24pqNyxFSOwuqqYoUkvw5NeU8b7nd/5HRobG/lv/+2/8Z3vfAe3282f/MmfsHTpUjo6VGFwMJhYjYzD4eBb3/oW999/P5s2beLjH/84W7bosxSN0jIwCcCqStfsc+tqimnsm7CC//O41D9BVXE+5UXO2efW1RbT3D+5iFeVnjT1TrCupnhW6LryHdSU5HN5wJqr+TT3T7K6unj279XVrtnnc4mctqBmP/SBCa5zuZMez+128+abb7Jjxw5ef/11KitVvOYjH/kIX/rSl3jhhRd49NFHEx7/oYce4qGHHkr6OuNxeXCSiqI8yoryZp9bU13M6LSPoUkvlcXmxOyygdbBKVZUXumeWu528ZJVC3UVzQMTfGBj7RXPraxyzS6ILBTjMz76xj2sCVNQJQV51JTk55y1mdMKalXV3KrkuhXJKyhQmXzj4+OzygnA5XLxb//2b6aMvxC0DEyyIsx6AljmVkK4fXjaUlBhtA1NcdO8xJEVlUUMTXoZn/FRUpAX5czcYsrrZ2DCy/J5ynxVpcuqhZpHy8AUMCefNFZVuXLO2sxpF9+SikIAOkfM6wmWn59Pc3OzaeMtBq2DU1fdHMvcaq7ah6YW45LSkhlfgJ6xmauE7oqQMm8dtOZKo2NY3WNLQ/ecxsoqFwMTSplbKDqG1fdGu+c0lrmL6BzOrf6FOa2g8h12akvzc+5Dj4UvEKR7dJpl8wTJsgrNgrKErkbH8DRScrWLL/R3m6XMZ2kb1ITulXOlLRJ7Rq1ejxpzyvzKuVpaUUjv+ExO9XrMaQUF6kvQYSmoWXrHZghKaCi/UkG58h1Uupy0D1lzpaGtdK8WJOpva+Ezh7awWT5PQWlp1N2Wgpqlc2SaknwHZYVXuoeXlBciJTnVBd5SUBWFprr4Mh1NqM5XUKDmqsOyoGbRhOr8uSotcFCYZ6dnzBK6Gh3D0xTk2ah0Oa94vi5UzGxZUHN0DE/NWpbhaAufXFpQ57yCWlJeSNfIdMqaxmYaXaHVWaQbpLa0gL4xz0JfUtrSPTKNTUDtvE4kQgjqygosBRVG79gMdaUFV3U/qS21LKj5dAxPXxWrg7n4XS4tEnNeQdWXF+IPSgYnLcEL0DUSsgrKrr5B6soK6LX2hZqla3SGmpICHBFaz9SW5tNrCd1Z+sY8s8ooHKfDRlVxPj1juWMVxKNnbIb6CPdf7ay1mTuyKucVVE1o9WtZBoqukWkqivIodF7d8aK2tICRKV/O7u45n+7RaerLI/fbqyu1LKhwesZmIiooUHEobWGU68z4AoxM+WblUjhOhw23y5lTi0RLQWkKKoc+9Fj0RlnpgqXM59M1MhPR0gSoLVPuUKvzhmp03Ds2Q21p5Pq5urICKwYVon9c3Vs1UeaqpiQ/p+6/nFdQmjDuzaEPPRb9E56o3d1n58pS5gAhoRvdgvIGggyZ1EYrkxmb9uPxB2NaULmUmRYLbaEcrRN+TWlBTi2mc15BVRWnxipIxZbvv/d7v0dNTQ1bt26NedzKlSvZtm0bO3fuZNeuXYbeo39sJr6CslxXTHr8THkDUVe6s9lp1lzNLmiiCd26sgLGZvxM5uCW5vPR5FAkF5/2vGVB5RBOh0p9NdsqMHvLd4DPfe5z7N27V9ex+/bt4/jx4xw7dkz3+FJK+ic81JREtwrAsjZhzhVTHaXtU22Zpcw1tDmoi2FBgaXMYW6uolmbtaX59E94cibrOKd78WlUm7gquXjxIl/84hc5fPgwlZWVjIyM8JWvfMWUsW+//XZaWlpMGSsSI1M+fAEZdfVWWugg32GzhC7KFQpEtTbrcjDjKhpafClqDKp0rptEeIPUXKRv3IPDJnAXOSO+XlNSQCAoGZr0mrbRajqTnQrqxb+EnlO6D//H6TH8ExL+rSz6QXXb4MGvxRwnlVu+G0EIwX333YcQgj/8wz/kiSee0HVeX5wArRCC2tICS0ERZkFFERLVJfkIYVkFEPa9imKZN4QyIbusgnn6xlUM2GaLvFu2puT7xqO74rOJ7FRQBnHabUx7k29Wmcot341w4MABGhoa6Ovr495772Xjxo3cfvvtcc/Tgq/R3FYQqu+xhG5cBZVnV/U9Vi2UcluVFjgili7AnOLSrNJcpndsJqoHA6A6NFd9Yx62pGZD7bQiOxVUHEtnPs+8dJ7vvtlM42cfjLpy0UMqt3w3grYVfE1NDR/+8Ic5cuSILgU1l+Ia3dqrKS3gXJe1W2z/uAe7TVARxRUDKrZiWVCxsx0BCp12XE47A+NWxmP/uOeq3o7h5FpZTHYqKIPUliq/7mCSft1Ubvmul8nJSYLBICUlJUxOTvLyyy/z13/917rOnXPFRJ+DutIC3jjfZ8q1ZjL94x4qXU7sMRY01cX5VgsfVFJNXVl0BQVQWZxvdXNBKfPrVlREfV1zv+dKolLOZ/GBeauSVG75DvDJT36Sm266iQsXLrB06VJ+8IMfAGqn3a6uLgB6e3u59dZb2bFjB7t37+bhhx/mgQce0DV+35iHIqcdV370dUttaT6T3kDO798Tq15Mo7LYaQldoC9G6YJGVbGTgRx38Xn8AYanfFFjdaC2CCovyrMsKCMIIR4A/gmwA9+XUn5t3uv/G6D5tRzAJqBaSjkkhGgBxoEA4JdSGivcMQHNpZWsXzfVW74/+eSTEZ/fs2fP7O+rV6/mxIkT8QfzTsHR78PSXbDiZoBQink8QaJeH5zw5s5usRP9cPo/YdXtULsF0BekrizOZ3DCi5TyqiapWctAI1x8CTY/BuXLkFIyMOGNGdcE9b3KuQ0eO9+D5n1w/R9AQemsiz1atqNGbUlBzlhQSSsoIYQd+DZwL9ABHBVCPCulPKsdI6X8B+AfQsc/CvwXKeVQ2DB3SSkHkr2WRDHTr5sRW75LCU9/BppeUX9//nVYeh19YzMxV28A7tB2CYOTHlbO23U3K/F74EcPw8AFyC+FLx2Fkjr6xz1sqiuNeWpVcT7+oGRs2k9ZUQ4o8/Ee+LcHYbIfjv0Q/vAtJmQ+3kBw9nsTjcrifN5rG16gC00Dek7DD+6DoA+aXoPPvRA38UajpjR/1h2f7Zjh4tsNNEkpm6WUXuAp4LEYx38SiGwKLBKVrpBVYEJbmozY8r35DaWc7vgLKHTDW38PqLhKdZzVm2ZBDUzkSED7/Z8o5XTP34JvGg58k2BQWQXR0vE1qoqVUB7IFTffgW/C9DDc+99g6BKceWa21VNlHAuqutjJ0KQ3ZwpQeeWvoaAMbvszaD0A7UcYnNA3V26Xk6Ec+U6ZoaCWAO1hf3eEnrsKIUQR8ADwy7CnJfCyEOJdIUTUgh0hxBNCiGNCiGP9/f0mXPYchU47hXl2hnJF6L77IyiqhNv+V7j2M9D0KsyMKQUV5+aoDAndnOkxd/QH0HAt3PKnsPYDcO5ZhidVJX/cuXLNuUOzHt80vPfvsOXDcPOXwb0GTj49u5CZv1HhfCqL8wlKGJ7KgbkaugyXXoPdf6AUlLMETvxsTpnHmytXfs7IKjMUVCTnerRl0KPAgXnuvVuklNcCDwJfFEJEzIeWUn5PSrlLSrmruro6uSuOQGVoBZf1zIzBhT2w7WPgcMK6+yDox9f0BuMef9ybY9bFlwsB7d6z0HcWdv42CAEbH4HRdsZajwNzNSnR0JR5TgT/m14F7zjs/JSaq80fhLZDjIyOAsR18c1Z5jkwV2d/ox53fgqcLlh1G1x+i6GQco7vDnUy6Q3kxLY3ZiioDmBZ2N9Lga4oxz7OPPeelLIr9NgH/ArlMlxwKl1OU1x8aU/Lfgh4YePD6u9luyHPha/pDQDcxbFvjnyHnZICR264+LQY3aYPqseVtwLgbzsCzLnwoqEpqJxQ5ueeg8KK2Tli+U0Q9CO63gXm5iIas8o8F2qhml6Fmi1QHhKbK2+FoWZ8Q+3kO2wURSlo1tAUWC4sqM1QUEeBdUKIVUIIJ0oJPTv/ICFEGXAH8Juw51xCiBLtd+A+4LQJ12QYtytHUoKb90FeESy7Qf1tz1NtnLpPAkTtARZOzijztsNQuRZKatXfFSuh0I2z530gvtB1FzkRIgfidcGgCvSvvUd9nwCWXg+Aq1c1K9bcndGYzQ7N9nvQM66+V+vCCvCX3wRAyeAJ3C5n3IxPS0EZQErpB74EvAScA56WUp4RQnxBCPGFsEM/DLwspZwMe64W2C+EOAEcAV6QUupr120y7lzx6156Xa3YHGECo34H+YNnsBE/2wq09OksFyRSKkGy7Ma554SAJddROhRS5nGErsNuo6IoBxY+vadhagDW3D33XJEb3KspGTlHYZ49apsjDS2e15/t2WmX31KZe2vDFFTNJhA2KsYv6rv/ZjNps19emVIHJaXcA+yZ99x35/39I+BH855rBnaYcQ3Joooqs7xmZaQdBptg1+9f+Xz9Duz+/8kq0a37Bsn6mpWBRpgeguU3Xvl83TZKL+0jT/gpK4yfOl7pcmZ/kkRLqBPKqjuufL56E+7Lp+NamqA65efZRfYL3aZXIc915cInrxAq11I7dgl3bfy5mrOgslyZY3WSmMXtcuLxB5nyZnHg8fKb6nHNXVc+X7NRPS269FtQ2S5I2g+rx/kKqmo9dulnc8FwzDZHGpW50CGh7TCUL4eyecm7NRup8nZQWxR/noQQVLryGch2C6r1EKy4SSUohVO7hWW+5rhJSpBb2aGWggqRE37dtsOq7ql645XPu9cAsNrWQ7mOGFRVsarDCGZzzUrbYZWKX7n2yuer1gOwPb9X1zBaN4msRXOFhuIoV1C9EQcBNjn19W7MemU+PQL95+biv+FUbaA+2EdVYfxhSgsdOGwiu2VVCEtBhcgJv27HURW8nu/CLCxnwlHBekefLqvA7XISlDAyncX9+NoOKTfM/LmqUgprg6Nb1zBVriwXusOXYbIvitBdB8Bahz4FVZXtlnlnaHfrUAJJON6yFdiEZKU9fkMdIQQVueA6xlJQs2S9X3d6BPrPR7w5AHodS1ht128VQBanT0/0wVDz1e49gIIyhkQ5K0WPrqEqi/MZm/Hj9SfeJDitaXtHPUawoGT5CgCWotOCynah234UUIk28xkrVCnnS6XOezBHMmktBRUi6/262uptWWQF1S7qWS71WwWQxenTbVHiTyE6ZTW1Ul83k9laqGxd+LQdUi175ruNgUlbCWOyiLqgPmVe4cryYvmOI1CzGQqu7uHYn6e6VNf6o5WQXkmutDuyFFQId7a38Ok4BsIWcfUG0Basojw4BP74/39lttestL8DjgKovzrBNBiUtAaqqPLrtKBmO29k6feq/Qgs3Q22q0XJ4KSXNllDpU/fXLldTqZ9AaazMVEpGISOd6MuEPsDJYzLQio8HbqGc2e7Mg9hKagQLqcdp8OWvR96e2j1ll8S8eXLPjc2JIx1xh3Kne1Ct+2Q6r/nuLrOaXzGT7usotTTo4ROHLRaqazsMTczqtzGyyI3fxmc9NIuqymd0Sd0NWU+lI1zNXABPKNKmUdgaMpHp6yi2KNPmWd9vC6EpaBCqDTXLPXrBoPKgloaeautYFDS5ClXf4zGFyYVoa0jslKZe6eg+0RU997gpIcOWY1d+mEivjDJ6uzQjmOAjBrXHJrw0iGrKZzsUtl+cZidq2xc+LSr9ljRlPnQpJdu6aZgSp+b3e1yMp7Nsc0QloIKI2vN5oGLMVdvYzM+2oKh/at0KCiH3UZ5UV52zlXnuxD0R06bRllCnbJK/THSFne4rHbxdUQP+oMSuj3SjS0wAzMjcYfL6nhdxxHVq3B+2UKIoUkv3VRiH9cfg4IstczDsBRUGO5staA64q/eeqRb/THaHvGY+biLslSZawkSUWIFgxNhczUe34IqK8zDnq01K+3Rg/6g9sGanaux+IK3oiiLrU0tVhelS83gpJdRRzViagB88TdOzeqFTxiWggqjMlszY9rjr948OPHmu3XFoCCLrc32w0roFlZEfHl4yku/LFN/TMRPCbbZBBVFedm38AkGVWZoFLcxKFfdkD1kbepQUFombdZ9r6aGlBcjyqIHVHnLRH6d+kOHFZXVruMwLAUVRtY2jO04FrlAN4T2JQ+6amBCX/p0ViqoYEAp80hFpyEGJ70MUYIUdl0KCrI0JXiwUSVJRLHKQX2vvEUhoatj4ZO1HRI61ZYj0VzsAMOTPma0uRqNP1dZ7Q4Nw1JQYWTlRmBaplWUQDaErcKKaw0J3ayzCvrOgmcsavwJYHjSS36eA1FcA+P65qoiG92hWtA/htAdmPQii2sBAWPxg/9ah4Tsm6t3QNijxupAKRo1V+i6B93Zam3Ow1JQYbizsd1R+xFAxrUKAByltaqLgg7cLifDU6r7e9YwW6Abe67cRU5DylzrlJ9VdByBgvKobmNQbquy4iJwVet2HWdlJm3bYbXnWn5x1EOGJr3YS0MKajK+F6O8MA+bsBRUTpGVaa6tB8HmiGlBDU96KcyzKwU12ac7JTgQlIxN+8282sWl7TCU1EOoRU8khie9qqi7uFZXmjlkqTu0PdTXMUKBrsbQhFcVdRfXwNSgrmGzbq78XuVij2GVB4KSkWkfhSWV6l7VsUhUsc0sVObzsBRUGHMNY7PIr9t2COp3grMo6iFDk16lnItrwT+j3FxxcGdjUWX7O8rSjLEf2NCUT2WblRixNvMZmfLhD2RJzUqcAl0AKaWyNl1OcFXpnqusc/H1nAT/tNpiIwojU16kBHdxgbI2J/V7MbJqMR0BS0GFkXWZMb4ZFaCNcXOAcltVFjvBVaOe0JEokXXNdUfaVYp9lAJdjaFJj1rIFNcqV0wwfryycrZmJUu6v8cp0AWY9gXw+EM7NLtqdLmtQMukzZL7D5QHA67coHAe2v/rLs5XCiqXE5XmYSmoMLIuzbXrPQh4YfnNMQ8bnvIqq6BYU1DxYytZ11y39YB6XHFLzMOGJ31UaApKBmEy/vYIWVdU2f5OzL6OECZ0Xc6QVRB/nrTjR6d9+LLF2mw7DO7VyuKOguamUwufGt0WlIptZskCMQqWggqjtNCRXUWV2uotjlUwOOGduzlAl4KqcKl2R1kjdFv2q6B/7daoh3j8ASY8/jkLCnTFobKuqLJlv2qkG6VAF8IUVFHIxeebBO9k3KErs0mZS6lc7DHiTzA3VxVFTsMWVNZY5VGwFFQYQqjAY1bcHKBujupNUOSOedjwlHfOKgBd7phZCyprlPkBWHFzzKD/8KQSBhUuJ5SEalZ0xFayqlO+b1q1OFp5a8zDZoWuZkGBTmszi7wYA40wPaTDbRyyoIo1a7NfX6JSkZORKS+BLN7Z2lJQ88iaTdO0otM48acZX4Apb0C5Ygrdql5DhwVV6LRTkGfLjiDtWJfaoDCO0NXcKVdYmzraHWVVvK79iHIbr7w95mFD4W4rQwoqizJp2zQPhgELqrgGAh7diUpBCaNZvLO1paDmUeHKyw4LqudkqOg0dvzpCv+3zRZyMejd1TM/O7L4WvTHn0ATJPqLKrUec1lhbbbsV/EnnVbBlRaU/uSbrJir5jdU2UKMWjFQc1VS4MDpsBlKVKrItqSuCJiioIQQDwghLgghmoQQfxnh9TuFEKNCiOOhn7/We+5CU+nKkn1Wml5Tj6vviHnYcLggAbWCy7UsoqZXlPVYty3mYbMWVLET8gohv0yXgsqz2ygrzJLu7y1vq7KFGPEnUG5jh01QWuCAYuMKKuMXicGAUlCr74pZtgDMpeND2FzFdx1nXVJXBBzJDiCEsAPfBu4FOoCjQohnpZRn5x36tpTykQTPXTAqXHmzQjujubRPCVzNFRWFKywoMNQhIStqVgI+uPgSbHgIbPaYhw6Hu2IAXJW6s9OyokPC9Ihy8d36lbiHDk2quKYQAopCDWN1KChtr7GMd7N3n4DpYVhzV9xDh8MV1KwFFV9BaYlKGX8PxsAMC2o30CSlbJZSeoGngMcW4NyU4HblMzLty+zAo2dcdeVe84G4h0a2oHSmuWaDgmo9qPYq2vhQ3EOHJr0IAeWagiqqVEFwHVRkQ1Fl8xsgA7D23riHDmktoUAViTuLdSnzrNlrrHmfelx9Z9xDBye9YQvEkIIykKiU8XMVAzMU1BIgfBOhjtBz87lJCHFCCPGiEGKLwXMRQjwhhDgmhDjW36/PBZUI7qI8pFTV3RlLy3616d7a+ArqKguqqFK1pdHZ7ijjb44Le8BRAGvujnvo0JSX8tD+ToByC07pU1BZMVdNr0BBWcwCXQ1VL5Y394SrSnexbnbM1etQG9+DASp5xh1+/wmbPmsz20o9ImCGgorkYJ0v3d4DVkgpdwD/DPzawLnqSSm/J6XcJaXcVV1dnei1xsVdnAWrkosvQZ4rZoNYjaFJD3aboLQgJEyK3CqLyDcV91y3y8lUJnd/lxLO71GrXKcr7uHDk745QQJqrqaHdb1Vxrv4pFRxzdV3gT1+ZGBw0jO7wgfm0qd1oOYqgzMep4ZUicf6++IeKqWcdYcCys1cVKnLi5HvsFOc78h8d2gMzFBQHcCysL+XAlfsuCWlHJNSToR+3wPkCSGq9Jy70LgzfVfPYADOvwDr7gVHftzDhyZ9VBTlYQu3CkCXZZDxraF6T8Nom4o/6WAwfKULc9amDjK++3vPSRjvVt8rHQxPzbeg9HeTqChyzmZMZiQXX1Ku0I0Pxz10wuPHF5BzHgxQMbspnXOVLVnHUTBDQR0F1gkhVgkhnMDjwLPhBwgh6oRQqSxCiN2h9x3Uc+5Ck/Fmc8dRlQG06VFdhw9dJXRDCkpHbCXjFdT5PYCADQ/qOnx40jeXIAFq113flK4tujO++/vZZ5XraX38uQoEJSNTYTEoMGZBZfr2JBdegJIGqL8m7qFzLaHCFpOFFSohRQfubNxrLIykFZSU0g98CXgJOAc8LaU8I4T4ghDiC6HDPgqcFkKcAL4JPC4VEc9N9pqSIeM7JJx7DuxOWBffvQBhncw1tK3Oc8GCOv+86sitI04AYU11NQwo84zfAfXcc6pOzFUZ99DRaR9ByZXfK1fIKtAZ2xye8hLMxEQl37RyhW58KGZXEo3BWQUVZm0W5VhsMwZJp5nDrNtuz7znvhv2+7eAb+k9dzGZtaAy8UOXUgmSVXfErVPRGJz0srGuZO6JwhyxoEbaldvqnr/VdXgwZBVcaUGFuUNLG2KeH97CZ3XqQqipof8CDFyA3X+g6/Ch+ZmhoBY+QT94JyC/JMqZCrcrX1mbM765jMlMofkNZVXrcO/BnJy50oIq1x3brHA5udg7YfAiMwerk8Q8ZgOPmSh0e0/DSKtu9x7Mq8GAMKsg/g3izuQOCRdeVI86BcnYjA9/UF4dgwJdcai5vcYycK7OhbzueoXulJYZOs9tBbq+Vxk9V+efVwXcK2K3zdK4KosW1MLHQPJNRi4QdWIpqAhkbLHuuedUnEBn0F/byfPK1ZtmFcS/QcpCKdcZOVcXXoDKdVC1Ttfhs4IkQRdfRlubZ5+FpbvjWokaWlbZFUkSBhSUZnll3Pcq4FcLn3X3gkOf5RfV2vRPK3dhHCpcTqZ9Aaa9GZpJGwdLQUXAnantjs49rxpTFuvzIQ2HdvK8YvXmcKqiSh1CV207nZd5czU9omrFdFoEEC2YnQMZj8MtyhVqxCqfCtsLSiMXLKi2Q8qaNujBcDpsuJxhXUwSmKus6IkZAUtBRcBdlIGpm4OXoO8MbHwk/rEhrthULhwDBagVRc7M69Ld+IqKhxhQUJpVUJlgxmNBnh2X0555NSvnnlOPBoTuFd25NQwI3YxV5ueeU0XfOlPxYa6LhAjv11ekf+GjzXHGWZs6sRRUBNyu/MxrS3P+efWYrNCFUJBWfxZRxtWsXHhB9Txbskv3KRGVuSNfWZt6M66KM1CZn31W9XR0r9J9ytCkF5fTTkFeBKsgW63NYFApqLX36Cr61hianJd4A8YsqOIMtTZ1YimoCLhdeZlnMp97Xu1yWrFC9ymalVgxX0EZSHPNuG2n/R5ofBU2PKArDVgjotsKjLU7Ksqw+p7xXlVXt1G/9QRqNX/Vd6qgXD3qELoZaW12vQfjXYYsTVAK6oq4JhjKpLUsqBzE7cpnxhdkypshRZXjPdBxxLAgiZhBBKEsIiMuvgy6OVreBu84bNBvaYKyNq+yCgCKKgxZmxk1VxdfBKQhqxzmNT/VyCuAvCLd2WkZZ22eexZsDlj/gKHTrqpDBIMxqAyv24yDpaAi4M60NvbnX1CPm/THn2Bu19KIFpSBNNeM6v5+fo/qUxhnn6z5DE16ZrduvwJDDWPzM2ule/4FKF8BtVviHxvG8FQECwqMd0iYyhDXsZTKFbrqDuUeN8BwJBefgRhUSYEjczNpdWApqAjMmc0ZcoOcfx7ca6B6o6HThiY9lBY4yLPP+xoUupUgCcZPXXW7nJnT/V1KlQa89m614aAB1KZyEXobGthyQ2vhkxH9+DwT0Pymsp7ibLg3nyu22ginsEK/BeXKIAuq9wwMXzbs3vP4A4x7/BGszUKVbKFjrrRM2owLSejEUlARyKi2NNPDcPktZT0ZFSRTPiqLIwjdwgpAwsxo3DEyatvp3jMqTrDufsOnDkVyW0EoXqe/YazHH2QqE2pWLr2mutrrrKkLJ6LbCgwqqAxKVDr/PCAMu0K1BXBky9ygMs+UuTKIpaAiMGtBZcKq5NLroZRpY+49UBaUtoPpFRhwMWTUpmmNL6vHtfcYPjWm0J0ZU1lcccio7LTzL6j/bflNhk6b8QWY8gaiuPjK9buOM8nabHwFlu7S3dNRYzYzNKK1qd/NXlHktCyoXGI28JgJq5Km11WG1JLrDJ86OBHFbWUkiyiT4nVNr6qU6dJ6Q6dJKSMH/kFt4IcEz1jccTKmADUYUMp83f269n4KJ2q2Ixi2CjLC2pwags53de1ePZ+odYhgaK4qizMs+cYAloKKwGzgMd1XJVIqC2r1nWqjM4PEdFuBoSyitF/BzYxC22Fd25XPZ9IbwOsPRhYkBWVz48dhzoJKc9dx93H12SdgaWqLuphCV2dHc8iAhU/zPkAmNleh70HEuSqqMFQsbyVJ5BAq8JgBq5L+CyqmomO78vlIKRme8kb2fxsQurMWVLpbm81vqE3kDFT5awzFErpafc/MSNxxMsYyb35DPRrMdIR4FpS2W3P8HnMZs3HorAfjWsOnDptlQWXy9iRxsBRUFNyuvPS/OS69ph4TUFDjkXby1DCgoDKm+3vjK6rL9NLdhk/VVrpXFVSCMQuqOEOE7qV9ULvVcEwForQ50jDS7igT5kpKdQ+uuSthD4YQRN5SRKtF1GFtVricBKXahyvbsBRUFDKiqPLS61C1HsqXGT51tgYq0s0xK3RHdI2lbTCXtkipNpFbc5fhmApEaRSrYUBBuZx2nA5ben+vvFPQ/o5yGyeA9r9FXPhkW8PYvrMw3p1Q/AnU/1Ye2hHgKgrLIeAFv77dmrXxsg1LQUUh7RWUbwZaDiRkPUHYTp6RrAJHPjgKdQldyIC5Gr6sXKGrbk/o9KgdN2CuMFNHAaoQgkpXmrc7ajuoBOOauxI6fXjSi01AaWGE7NBZBWWkH18ax+uaXlWPaxNTUMNTUTJDIaHYZlovEhPEUlBRqChyMpzOlezth9WeMasTEyQxV7qgbhADCiqt4yqth9TjipsTOj1mtpUBQQIZENC+tA/sTlie4FxNeSkvcka3CkCXBVWc78BptzGUzsXyLfuhaoPufbLmMzjhvXJTx3CMxIEzJV6XAJaCioIWeEzbFj6th9TmhAkL3RgZRKBuEL1tadLdxdd2UK3eqzYkdPrQpJd8h40iZ4Q4g7MEELoVlFbfk7Y0vwHLbgBnUUKnq9KFaN+pcvU4Ez8lXwiR3t0kgkFoewdWGKsTC2do0nvlpo7hGFBQlZkQr0sQS0FFoSLUwidtA49tB1Ugu6A0odO1lWnMFZxeoetK86LKtsOw7EZD3cvDUSvdeXv2aNhsobka0TVWWrtDp4ag97TqKZcgAxMeqiK5jWHuu6rX2kznueo7C55Rw4XM4SgXX7T7r1w9WhaURSRmA48TabiCC/ig41hSN8fQpIfCPDuFkawCMKSgKlxOvP4gk+lYVDnRB4NNSa50ozSK1TDoDk1bQdJ+RD0mMVcDE16qIrXPAuPWZjrH69pCbuPlNyZ0eiAoo9chgiELKiO3J9GJpaCiUB26yfrTUUH1nATfVFKCZDBa6x4Ng0IX0nRPmllBkpgrFLQ2R1GELhi2Nic8fjz+NFTmbYfAlgcNxmt6NAbGPdEVlM2mrKhsUOZth6GkQXV7T4DhKS9BSQxr01gmbVVJPgPpKKuSxBQFJYR4QAhxQQjRJIT4ywivf0oIcTL0c1AIsSPstRYhxCkhxHEhxDEzrscMqkvUTTaQjqsSLei/LLHVG8ToLadRWG5I6EKaprm2HVYZifU74h8bhahtjjQKyw3E69K4d2H7O2qeEow/zfhUd+6oQheMW5vpeP9JqZT58hsNN2jW0JRJdUlB5APyjblDq4stBRURIYQd+DbwILAZ+KQQYvO8wy4Dd0gptwP/F/C9ea/fJaXcKaXUvwd3itFWgQPjafihtx2CipWGe8qF0z/umVXCEdEEic5CQUjTlODWg6qRpyOG0IxDXGWegLWZdu4Y34zqKZegywrmFihRLSgwbG2Oe/x4/fEb8S4oo+0w1pmUi31gXJurKN+rvAK15YbOuaoqzqc/HWVVkphhQe0GmqSUzVJKL/AU8Fj4AVLKg1JKLbf0MLDUhPdNKWWFeThsIv1cfFIqqyCJmwNCCiqeIJEB8E7GHatyVkGlWUKJZ1y5Q5OYq2mv6s4dsYuEhhGhm64ZV93HVf1TUkJX3SuxFVS5fmVenKb1PW2H1WMSLvb+CVWAW6VnkaiDqhKnZUFFYQnQHvZ3R+i5aPw+8GLY3xJ4WQjxrhDiiWgnCSGeEEIcE0Ic6+/vT+qC9WCzCSqLnelnQQ02wdRAUoIkGFTdueNaUGBwT6g0m6v2IyCDSVkF2qo0tjIvN5TFB2mooDShm8RcaQIyrtDV0fkd5vrxpZ212XZIueBq5juK9DNnQZmkoIrzGZ7y4QukmbWZJGYoqEhO2Ih+ISHEXSgF9RdhT98ipbwW5SL8ohAiYrm/lPJ7UspdUspd1dXVyV6zLqrTMfA4G/RPLr01EJTxYwWgS/CW5DtwOmzpF69rO6xqxZYZ77+noa10YyvzcpW04o///6dtvK7tMFSuA1dVwkPMKqhY36t8Y0kSkIbKvPWQ+k4l0H9PY2DCg9Nho7QgRustAwpK+36mnTJPEjMUVAcQ3gxuKdA1/yAhxHbg+8BjUsrZLUillF2hxz7gVyiXYVpQVZyfnkK3qBKq1iU8RH+8AC0YsqCEEFSnow+87ZDa/ym/JOEhZi0oPdamDsugtED1XkurjMdgUHUmWX5DUsNo94ppMah03Nl6agj6zyXvYp9QLvaItXUaBi0oIP0W1ElihoI6CqwTQqwSQjiBx4Fnww8QQiwHngE+LaW8GPa8SwhRov0O3AecNuGaTCEtA4+tB9XNkWD2EMy5F+JaBWBoBZdWc+X3QsfRpNLLYU5B1cRS5gb68amtXPLSy4IabFTth0yIa5bkOyjIi2FZaC6+YPw0ey3jMa2UuVYrZsJcxbQ0wVA3l6p0LotJAuOtnechpfQLIb4EvATYgR9KKc8IIb4Qev27wF8DlcC/hFYM/lDGXi3wq9BzDuBnUsq9yV6TWVSX5DM46UFKGXuls1CM96jGp9f/flLDzAZodbn49CmompJ8WgbjJ1QsGN0nVCfoJALZoASJTcRoCQWG5yrtWviY4DaGUBeJWIseuNLa1JrHRqG8MA+bSDMXX9tBVSuWwP5P4QxMeFlSHmPRA4YsqJrQvKfVItEEklZQAFLKPcCeec99N+z3zwOfj3BeM5B4gUqKqSrOxxeQjE77Iu/ZstDMBrKTF7pgrgVVU5rP0RZ9O4AuCG0H1aMJrpjK4vzIzU81EtieJL2E7mFwVYN7dVLDxGxzpBGuzOMoKJtN4Hblp5dV0HZYKae8wqSGGZjwsGNpWeyDwks94iyQLRdfDqLdbGnzobcdUkWndduTGmZgwktBno3i/FgBWqOFggUMT/nSp2al9RC41yS06V44cdPxwdCuuqD6H6ZVMDvJolONmG2ONAxam7Wl+fSOpcn955uGzveSynSEuTZHcecqvxSCPl07EBc6VbsjzX2fLVgKKgaahdGXLmZz26Gki05B83/HCdDa8yDPZciCgjRR5lrQP0n3HugoaAbDQjet4nXjPTDcklRXEg1lQZmtoAroG4+/ad+C0PW+UhhJWuVaFm1KvlfpcP+ZiKWgYlA9azanwapkZgx6TiV9c4BOoQuGunRrc5UWynzggilBf1D/j9mCpK6sgHGPn0mPP8mrMwET6p8AvP4gI1M+HQrKmGVeU5JGFlRryG28LNlsRx0FzWD4e1VVnJ9+dZtJYimoGKRVu6OOUNGpCVaBrpUuGOoxp1lQfWNpsNptNSf+FAxKBiZ0KKi8QrXJn865qi1NI2XeehDyipLqVQjMWjna/xaVWaGrr1i3prSAgQkP/nQoQG07BNUbocid1DBx2xxpGIwDV2VhPz5LQcWgvCiPPLtID0HSdhiEHZZen/RQxiwovStdlZGUFi6GtkNQXJt00H902ocvIOPHoIQwNFe1obnqGU0TZb5st3LpJoFm5dSW6chMA0MWlJRpUNgc8Ic2KLwl6aE0ZZ4KF19ayCoTsRRUDIQQ1JYW0JsWVkHyRacA/kCQoSlvfKELhosqhYC+xXbHSAktB5KuFYPwgmaTlXmpEuKLHluZHlEbFCZZKwbM3iN1pXEUlMEu3bWh8Rb9Huw9Bd7xhHewDqdHmyuTlXldWQGj0z6m03FftgSxFFQc6koL6B6Nn0WTUvwe6Dxmys3RP+FByjmXXEwMCN08uw13kXPxLajhyzDeBatuS3ooXen4Ggb68WlusEUXuu3vANIcoTuqufjiCF2b3VC7o1l36GIvfFoOqEcTLKie0RlKCxwUOeNU+RgsX9AWBz2L/b0yEUtBxaG2rGDxg7Ra0akJQf/ukCBpKNNRx2FAQUHIxbDYc9WyXz2uuDXpoXS7YsDQXBXnOyhy2hf/e9V6QBWdLk1+l5vesRmcDhsVRTpchQm4jnsX29psPahcxklscaPRMzoT33qChCwobfxswVJQcagPWVBSx75IKWM26J98KrD25dV9g3jGVNq2DlT69CLfHC37oagKqjckPZSmzOv1zpVOQSKEoC4dXMetB00pOgWloGpL45QuaBiwoKpCruNFVebBoCr8NsHSBDVXdXoWiHkFYM83rKAW/XtlIpaCikNdWQEzviBj04uYEtx2CCrXJl10CkaFbrnKHPRO6BpbxesWUZBo8aeVtyYdfwLoHpmhrDAvvisGDGU8gnKxLqq16Z1SdT0mCd2esZn48ScNA8rcYbdR6VrkhU//OVW2YIJ7D9Q9WKfHxQ6G5kqb/27LgsodtFVJ99gixaECvpDQTT6mAtAzOk1Bno2yQp2uGNB9gzSUqaLKRUsJHm6BsQ6loEyge3RanyKHuZoxnZZ2bWnB4sYKOo5C0G+a0O0d88wmf8TFoOt40btJaB4ME5S5PxBkYMKjz4ICQ3PlyndQUuCwLKhcYjbwuFirks73VPbQ6jtNGa5rdIb6skJ9rhiDQdr68kKCEnoXK9VViz+ZpqBmjCmooF9XWxpgNjt00VzHl99UZQtJ7JWlIaVUcRUjCspjREEtcjeJlrehdAmUr0h6qP4JD0GpI9tRw6AyrystsGJQucSip7k2vwEIWBVxH0fDGBYkoN+CKlerwq6RRbI2Ww+ovbKqN5oyXPfoDPXlBla6oHu32JqSfDz+RXQdX3pdKSftupNg3ONn2hdImdCtLc1fPKEbDEDzm2qBaIbbeDYGbL6LT41bQLdlQeUOtYvt123eBw07k65e1+gxahWA7thKQ2jcRVFQwaASuqtuN0WQzPgCDE16Z/+nuCRY37Mobr7JQeg6DmvuNmW4Xi3F3JA7VH/yTUNZIQMTXmZ8i1Df0/me8iCs/YApw2lzVVdqvotPjVsw+x7ZgKWg4uB02Kgqdi6OBeUZV7ECk9x7gaAMZRAZVFA6rYL6WQtqEeaq5yRM9MK6+00Zbi6ZRK8gKVePuq3NkDJfjBq75n2ANE1B9egt0tUoKFPv7x3XdfiSikW0zJteBWGD1XeZMly3kSxaSMiCWtQ4sMnkpoJqPQTdJ3UfXltasDgWVNNrKq6x9l5Thhuc8OAPSuMWlM6+acX5DkoLHItT2Nz4MiBg7T2mDNcdEoapmqulFUUAdAwvwlxd2qcUasM1pgw3K3R1Kyhj1uaS0MKnczEU1KXXoOFa0zwYhurF4Mo9oXRQW1pAUKZJg2sTyE0F9esvwMF/1n14fdkiBR4v7IFCd9LdkzXmVm86rQKDbitQcahFWek2vqxqeoqrTRmuS7OgdMegtLka0XV4dXE+TruNjuGpBK4uCYIBuLhXuaxsMbZmN0DH8DQ2AfXxdojVMBjb1CyozoVW5pMD0PmuaYsemEvH171Dd0FZaE8ofd8TbUG16N1vTCI3FZRWgKqTJeWFdA4vcLFuwAcXX4L1D4DdlI2PjdVAgXpfZ3ECCmqBlflEP3Qcg3X3mTZkz2iiFpS+ubLZBEsqChde6LYdgqkB2PSoaUN2DE1RX1ZInl2nODHaIaG0ALtNLLwFdf55VQe46RHThuwYnp517+rCoGXesJjWZgrIXQVlQOgucxcx7vEzOu1L4UXNo+2QWo1veNC0ITXLRrf/GwzPVUN5wcLHVc7+GpCw6YOmDdk1OoPb5aQgT6eVYTBeB7C0onDhXXxnnwVHgWluY4D24alZK0cXBhWUw26jrrRg4ZX52d+o9ka1W00bsm1oiuXuIv0nGJyrZaGx24YW2DJPEZaC0sGifOhnfqW2dzcpkA3q+l1OO5UuAzvyGqxZqS8rZGTKx5R3AdOnTz8D1ZugdrNpQ3aPGCjSBSX0bXmGvlcLrqCkVFbBmg9AfrFpw7YPTbOsInVCF5QXo2MhrYKpIZVevvkxU7JCAaa9AfrHPQYVVLl61LnwKc53UOly0j5kWVCZS74xBbV8oRWU3wOnf6ncMCYKktbBSZZXuvT7v8GwMl+y0Jl8o52qT9rW3zJ1WMMrXYN7QoFKlBiY8Cxc+nTrARjrVELXJDz+AL3jMyxzG7GgytWjTrcVsPDu0HPPgQyYapVr8cZlKbSgtPHbLQsqg0l3C+riXnV9Ox43ddi2oSlWGLk5wFBjT1BWASi3z4Jw+j/V49aPmDZkIChpH5pmeaXBudLqe3SizdWCWVHv/1R9nibGn1RsFmMWVALJN0vKC+kZW8D06fd/AlUbTMt0hDn5kWoFtdxdZLn4whFCPCCEuCCEaBJC/GWE14UQ4puh108KIa7Ve25KKChTDVAD+txQC242H/8ZFNeZVv8Eavvy9uFEha7+m2NFpQuAloFJY++TCMEgHPs3teFe5RrThu0encYbCLIy9L/opsCYMteszQXJ5JsZhTO/Vpam0+B3IAaacjUkdBNIvllSUUggKBemsLn3rKo/vPYzprn3YE5BGXPxGcsOBVjmLqRzZDoraqGSVlBCCDvwbeBBYDPwSSHE/GDAg8C60M8TwHcMnGs+CQS0F8xsHmhS2XvX/I5pacCg0lu9/qCxmwMMWwVVxU6K8x0Lo6Ca96kNCnf9nqnDtg6qz3lFipX5gtZCnfoF+Kfhmk+bOqxmKS81kiQBCczVAlqb7/9ExRNT4MEoSiQGDIYtqEBQLkztZtthVbqQIsywoHYDTVLKZimlF3gKmO/kfgz4d6k4DJQLIep1nms+6Ww2H/oW2J1wwx+aOqx27caFbqmhQkEhBCurirg8uABzdeyHqvfeZvPiBDCnoIxbUMbKF2pKVC1Uyt2hwSAc+heo36lqxUykfWiaPLuIv5PufLTu7zrRPovLqV74zIwqV+jmD4KrytSh24emWe4uMhYDdhQoeZBASCLlC+qBJvjhA3Dwmyl7CzMU1BKgPezvjtBzeo7Rcy4AQognhBDHhBDH+vv7k7vihAKPqgA1pWbzRL9y7+143JS9n8Jp06wCdwJCVwbAq18wrKx0pd6CGmiE8y/AdZ8Dh87GmzppHZzE6bDp74ygYTBeZ7MJlrkLudyf4rm6sAeGLsEtXzbVZQWhFPPyQuw2g+MmkHyT77DR3K9vb7KEefdHapFx85+YPnT70JQxVyiEJd/oX/gsWFLXwW8q5bnzUyl7CzMUVKRv5vzldrRj9JyrnpTye1LKXVLKXdXVSXYLMNhqBdSH7k+12XzkexDwpuTmaB2axGETxooEISFlvqrKRcfwFF5/CpX5gX9SiumGPzJ96JbBSZa7i7ClWOgCrK0p5lKqhe7Bb0L5cthkvnOiZWByNu5oCINzZbMJVlW5aE6lMvd74PB3YNUdpiZHgNqSpG1oylgyiYbBuaovK8RhE6lVUOM9cOJJFYoweTEdjhkKqgNYFvb3UqBL5zF6zjWfBITuilS7GLyTcPRfYcNDULXO9OFbB1UxpUNvtb9GAvG6lZUugjKFmXxjXXDiKRVPMam1UTitg1OsNOoKBZU+7ZtSXUB0sqa6mNbBKXypsszb3oH2d+CmL5nWkUQjEJQ09U2wriaBUogElPma6mKaU2mZn/oFjHfDLX9q+tC9Yx6mfQHjLnYwPFd2m2CZuyi17tDD/6L6hKZgMR2OGQrqKLBOCLFKCOEEHgeenXfMs8BnQtl8NwKjUspuneeaTwIKSrsJL/bq68BsmPd/qraVvuXLKRleswoMk0BK8MqqFGfyHfq2akFz85dMH1pKSevgVIJWgTZX+pX52ppi/EE5G/cynQP/BIUVaqVrMp3D03j8QdbVLoyCWl3tom0oRZZ5MAgHvgl120wtjtfQ5MZCzdXamuLUyaqZUZU9u/lD4F6VmvcIkbSCklL6gS8BLwHngKellGeEEF8QQnwhdNgeoBloAv4V+ONY5yZ7TXFJQEFVFudT6XLS2JsCd0zAr5Ijlt0Ay280f/igpLF3gg21JcZPNriNBCgXH6TI2pweUXGCrR+BipWmD98zNsO0L5CgBWVsB2JQVgFAU18Kvlf9F+HCC7D7CXAmoHDj0NSvBODaRC0oj/49oUApqEBQ0jaUgu9V40swcAFu+YrpcTqYU1DrE7kHDcY21fsU0zI4hcefggy7Yz9Un92tXzF/7HmYYvNLKfeglFD4c98N+10CX9R7bspxlgDCkNsK1OrnYl8KViXnfgMjbXD//zB/bFTQ3+MPsqEuEQVlXJlXFOVRVpiXGnfMez9WNWwpci2c71Gf74a6UuMnJzBXa0LCPSVxqIP/pNpl7X7C/LFhdrG2tjrB75UMqs+yQN9cr67S5mqStTUJvGcsDnwTypYrqyAFNPZOUOlyUlWcQEJPAhbU+toSAkHJ5YFJNibyXY6Gb0ZlhK65G+p3mDduFHKzk4TNZrioEtSH3tQ7YW5XcynV1h+Va1X8KQVoq7eFUlBCCDbUlXC+29gCIC4BH7zzP2HlbSm7Oc53JzFXmjvUwMKnON9BXWkBl8y2oMa64MTPlWvP5HRpjca+CWpK8inTu7dROAl8r1ZXKyvQdGXefkS1y7rpi6bH6TQu9o0n5t4Dw+ULMGepXTTb43Py5zDZpyzNBSA3FRQktCpZV1vCuMdvbiZf53vQ9T7c8AWlOFPA+Z5xhIB1iaw6E8h4BNhcX8r5nnGCQROV+Zlfq15yN5kfe9I43zPGkvJCygoXRuhCijL5jnxPlQekIE6n0dg3kZzQBUNzVVKQR21pvvnu0IPfVK7sFMTpQMU1m3onEnPvgZor/4yyXnSyutqF3SZoNDMOJaX6XtVug1W3mzduDHJXQRlsGAuwPuSOuWDmh370+6rty/ZPmDfmPC70jLPCXUShM4HOFI58VSyYgIKa8gZoNTPV9fC3oXKdqfs+zedCzzgbE7GeICkF1dg3YZ4y93tV0s36B1MSpwMldC/1TbC2euEUFKjv1dkuEy3zsW44v0fV05nYmDmc7tEZxj1+1iWjoMCQFZXvsLOissjcRIn2I9B7GnZ/PiVxukjkroJK0K8LmLcqmRqCM88o5aTTD58IF3rHE3NZaSQwV5vq1f9zziw3X89pZWle//mUWZpef5CmvonE5yqBLD6ArUvKmPIGaB4wyTK4+CJM9iuhmyI6hqeZMEPoGvxebV1SRmPfhHkd4E/8TFma137GnPEiMJsgkUgyCSSUqKTer8TcpK6j31du7G0fM2/MOFgKygAVLic1Jfmc6zZJQZ15RpnuKRQkM74ALQOTiWXwaSTgA19XW4zdJsxb7Z54UvVHS+HNcal/An9QsrE+wcWClnxj8Hu1bYkS1ic7jJ0XlXd/DKVL1bbuKUK71u1LyxIbIAkFFQhKcxY+wSC89xNYcaupzYbncy6ZuCYkPFcb6kpoGZxk0mPC3mwzY3DuWdj+8ZRkhEbDUlAG2bGsnOPtI+Zcw6n/VBvt1W0zZ7wInOseIyjnLJqESCDNtSDPzppqlzmCJOCHk0/D+vvBVZn8eFE436OudVOigiTB5Js11S4K8+zmKKiJftVEd+cnTW02PJ+THSM47bbEM8QStAq2hpT56U4T5qr9HdVs+FpzG+jO53j7MCsriygvMtAkNpwEOpoD7FxWTlDCKTPm6vwLajG97ePJj2WAHFdQxoXnNcvLuTwwyfCkN7n3H2lX27pv+62U+nPfaxsB4NoVFYkPkqAy31RfyhkzLKjLb6jMoR2fTH6sGJxoH6XIaZ+t40qIfOPWpsNuY0tDqTmC5NyzKn17y4eTHysGx9tH2NxQitORoAhJoAAcoKGsALfLyelOE75XZ38D9nzY+HDyY0VBSsn7bSNcszzJ+w8My6sdy8oBeD8kA5Li9H+qdlnLdic/lgFyW0EZLBQEtSoBON4xktz7n3lGPW79aHLjxOG9tmGWlBca7zYdTqLW5tJyesZm6Ep2q+5zz6tEkrX3JDdOHI61DrFzWbnxdlDhJDhX25aWcaZrNPlmxGd+BVXroSZ1u9YEgpJTnaPsSNS9BwntCQWqhMEUZR4MKmW+9h7IN7mmKozu0Rn6xj2zciMhEnTxuV1OVlQWcbx9OPH3BpgcgEv71F5iC5QcoZHDCqoUkIZXu9uXliMEHE92VXL+BbX9QYpbhbzfOszO5eXJDZKgtbl7lRuAoy1Dib93MKi6ca+9B/KSULJxmPT4Odc9zq5kLE1IWEFtX1rGjC9IYzIp1BN9alv3zR9KqSC51D/BlDcwu0JPmARcx6Dm6mLvOFPeJGIrne+qkoXNqd3dR7NeFkNBAVyzrJz320aSq928+JJKJElREXMsclhBJfahF+c72FBbklwcanJQpWxueDDxMXTQMzpD1+gM1ybjXoCE4ioAG+tKcDntHGtJYgXXeQwmemHjI4mPoYPj7SMEgjI5VyiE5sq4Mt+5TL3vu61JzNXFl5R7z+T9seajLc62Ly1PbiCDe0JpXL/SjT8oea/V+LmznHtWJd2svz/xMXRwvH0Yp8OWXAw4rwhsjoTuwZ3Lyukb9yRXu3lxL5TUL0jniPlYCiqRVcnyct5vGyaQaN1K0yuATPnN8V6bEnbXmmFBBTyGCgVBxVauXVGRnAV1/gV1c667N/ExdPBu6zBCJBmrg4QtqJWVRdSVFnCoeTDx9256BUoaoHZr4mPo4HDzIG6Xk9XJxOog4bnatdKN3SY4nNRcvQorbobC8sTH0MG7rcNsTSZWB2F7QiUiq5Jc+Pi9cOl1JasW2L0HloJK6EO/cXUlYzP+xDOJLu6F4jqoS+2K5MjlIQrybGxuSLLGKom5un6lmwu944xO69+C4gouvwlLd6dckBxrHWZDbQmlBQl0kAgnQUEihOCmNZUcvjSYmDsm4FNxgnX3pFSQSCk5cGmAm9ZUGt8vaz4JlC+A8mJsW1KWuIIa7YS+symPaY7P+DjRMcpNa0zIPE3we7WloZSSfAcHLw0k9r6tB1S/xPUPJHZ+klgKKoEb5Ja1qrfZ/qYEPvRgAJpeVxZBigpONd5q7OfG1ZXkO5JMN9ZSghOYq+tXupESjl5OwIqaGYXuE7DqNuPnGnkbX4Cjl4e4IRQzS4r80oSSbwBuWlPJ4KQ3sf5p7UfU+65NraV5qX+S3jEPt6wxob9fgkIX1CLxRMcI094ECnYvvaYeU6ygDjcPEQhKbl1rwp5lCcbrHHYbN66p5O3GgcQWPo2vqEzHBWptNB9LQSXwoVcV57OpvpT9jQkoqJ6T4BmF1XcaP9cAHcNTNPdPcts6k24OSGiurl1RTpHTzpsX+42/b9thFVNZcYvxcw1wrGWYaV+AOzeYsDNoQRkgwWu8mPum1WqlndBqt+lV5QpN8fdKu7Zb1i6eVQBw42o3voBMzHXV9KpyhdZsSui99bK/sZ/CPDvXrihPfrAErU2A29ZV0TE8ndieYy1vq9TyBSzODSd3FVQSQhfUh/5u67DxFVzLAfWYYqH7dkh53r7OpJUuJBTQznfYuXlNJfsu9BlfwbW8DXYnLL3e8Psa4c2LfTgdNm5YbYIFlcTCZ5m7iGXuwsQWPpffgiW7UtoyC+BA0wBLygsT2/xyPpqCSmBlv3uVG6fDxhsX+oydGAxA8xuw9u6Ux1TebhrghtXu5D0YkJQyvzXk8XnbqMdnegR6TqVcVsXCUlBJfOjeQNC4H7z1ALhXQ2l9Qu+rl7cb+6krLUhsM7n5JCF0Ae7YUEPH8DSX+g3uD9VyQAldpwnCMAZvXuxn90o3RU4TtlpIsB+fxgc21rK/acBYCrVnArqPw8rUCpIZX4C3Gwe4fX01wgzhHr4nlEGKnA5uWl3Ja+cNKqjeM+p7vDK1LivNg6Eph6RJQkGtqnKxpLyQt4x6MdoOAzLl36tY5K6CsjtU77QEP/Tdq9y4nHZePtuj/6RgEFoPpnxF4vEHePviAHduMFGQQMJC9871ys1oaLU7MxYSurcm9J566RyZ5mLvBLevN1GQQMLfq/s21+LxB3nrooHVbscRCPpVVloKeetiP1PeAA9urTNnwCTn6gObarg8MEmzka1KWg+qxxTP1d7TSi7cs6nWnAGTUFBCCO7eWMPbjf3GPD6t+xfEgxGL3FVQkNSHXpBn586NNbxytld/unnfGeUmS7HQPdA0wLjHz/2mCZLkrM1l7iLW1RTz6rle/Sdp8acUz9VLqRAkkPBcXb/KTWmBg1fOGpirlgMg7LDshoTeUy97T/dQVphnTlYaJD1Xd4Vihq8bsaJa96uWPeXLEnpPvew93cOm+lJWJpuKr1FQDr4plfadAPdvqWPGF+StRgNWVMsBWHId5BUm9J5mYCmoBG8OUB/6wIR3tt4oLgsUf9pzqoeSAoc5mVaQVKGgxgNb6zhyeYiBCY++ExYo/vTi6W421pWwOtF9jeaTwK664eTZbdy9sYbXz/fqb3vUegAadqa0ZY/XH+SVc73cs6mWvGRaQYWTpIJa5i5iQ20JL5/RqcylXBAPRu/YDO+2DZtnaUJSWccAN6x2U1aYx0tndHp8POMqg3YR409gKaikhO5dG6px2m2zq/C4LMDqzRcI8srZXu7dVJtccWA4SRQKajy4tZ6gRL8wadmf8vhT39gMx1qHeWibifHABLt0h3PfljqGp3z6MtR806ptT4oFycFLA4zP+FMjdJNc+BxtHaJvXEcRef8FmBpM+Vy9dKYHKUmrucqz2/jAphpeO9eHT8/Cp+0d1d4oxR6MeFgKKombo6Qgj5vXVvLS2Z74GWrBoLKgVqT2Az/cPMjotI8HzLw5IKk0V4BN9SWsqCzixdPd8Q9eoPhTagRJcu5QgNvXq4XPy3rcfB1HIeBNudDde7oHl9POrWZkhWqYoKAe2laPlPCSnoVPq+bBSG386cVTPaytKU58M8dImPC9un9LHaPTPo7oqUls3a+8JgvcvXw+Oa6gEit+C+f+LXW0D03H38Sw/zxMD6U8I2bPKSVIbl9vQv1TOAkWCmoIIXhwaz2HLg0yMhXHjz4bf0r9XJkuSOx5yiWaxFwV5zu4dV0Ve0/rWPi0HgQELL8x4feLhz8Q5OWzvdy9qZaCPBP3mDLB2lxfW8yaahd7TupY+LQeUD3l3KsTfr94DE54eOfyoLmLHjBFmd++rpqCPNtsAkdMWg5Aw7WLVv+kkZSCEkK4hRCvCCEaQ49XNTITQiwTQuwTQpwTQpwRQvxp2GtfFUJ0CiGOh34eSuZ6DJOkBQVw7+ZabIL4lkFr6uNPgaDklbM93LWxxlxBAqbM1YNb6/AHZfwEgNb9qpHn0tSt3gZCguQhswUJmDJXD2+rp3NkmhPxNjFs2a82vExhK6gjLUMMTXpTIHSTtwqEEDy0rZ53Lg/Gjm/Oxp9uTmn908tnewlKUuPBgKTmqtBp564NNew90xM7scs7CV3vLWp6uUayFtRfAq9JKdcBr4X+no8f+DMp5SbgRuCLQojwzWr+UUq5M/SzJ8nrMUaCe0KFU1Wcz01rKnnhZHfs1W7LfihdAhUrE36veBxtGWJgwsuDW1NQY2WC0N2+tIwl5YXxV3At+2FpauNPL59RguRBM+NPGibM1T2ba8mzC1442RX9IL9HufhS7Arde7qHgjwbd24w2Sq350GeK+m5emibjvjmUDOMd6fcFfri6R5WVBaxOZnu5ZEwQUEBPLy9nv5xT+wGzu1a2cLixp8geQX1GPDj0O8/Bj40/wApZbeU8r3Q7+PAOWBJku9rDkkUCobz8LYGmgcmORtte3MplQW14paUrt5ePNWdGkECCe8JFY5y89XxduMA4zNRmsfOjEHX8ZQL3RdPd7OysoiNiW7vHosEt5EIp6wwj9vXVcde+HS+p7bhTqHQDQYle0/3cMf6anMKmedjwlxtrCthVZWLPadieDFm659SN1ejUz4ONg3wwNY6c+oPwzFJQd29sYaCPBsvxHKJtobKFpantmxBD8kqqFopZTcoRQTEbGYmhFgJXAO8E/b0l4QQJ4UQP4zkIgw79wkhxDEhxLH+/gT6ukUiydRNjQe21mG3iegf+kAjTPan1GQOBiV7zyhB4spPlSBJfkvyB7fV4Q0Eee1clNqV9tRnDw1Pejl4aZAHt9WbL0gACitUm5gkeXh7PV2jM7wfbe+x1v3qcflNSb9XNN5vH6Zv3JMaqxxM+V5pC59DzYMMTUaJb7YegKJKqN6Q1HvF4pVzvfiDMjVz5SwGYUtaVhU5HXxgYy0vnu6OXsbQckDt/ZTCsgW9xFVQQohXhRCnI/wY2opSCFEM/BL4ipRSm+XvAGuAnUA38P9GO19K+T0p5S4p5a7qapMsBJNWJW6Xk5vXVPJ8tNWuJkhSaDK/3z5C71iKBYlvUm3rkATXLKugvqyA56Mp85a3Ux5/euWcKq5+KFVzZZKCumdzLU57jNVu60G1tbvLpMLZCLx4qoc8u+DuTSY00o2ESQufh7bVz8ZgI9J6IOXxp72nu2koK2DH0jLzBzeh1EPjke31DEx4I2fz+abVJqFpEH8CHQpKSnmPlHJrhJ/fAL1CiHqA0GPEZbEQIg+lnP5DSvlM2Ni9UsqAlDII/CuwsDmNSfbjC+eR7fW0DU1xujPCCqflABTXQuWapN8nGi+e6sZpt6VQkJSrxyTnymZTQe23LvZH3iNqAeJPL57qZmlFIVuXpKixakF50m4rgNKCPG5fX82eU90E5we1Az5Vq5JCl5WUkhdP93Dr2qrk98mKhklCd0tDKcvdRew5FUFBjbTDSFtKF4jjMz7eujjAA1tTZJVD0pm0GnduqKHIaee5SAufjmOhsoXFjz9B8i6+Z4HPhn7/LPCb+QcI9Wn9ADgnpfz/5r0WvoT9MHA6yesxhkkWFKh0c4dN8PypeUHtBYg/zQqSdSkUJEWhTt9TSeyOG+KR7fV4A0FenZ/N5xlPefxpdNrH/qYBHkqVew+UBeUZS9raBHh4ex3dkdx83SeURZvCle7pzjE6R6ZTZ5WDaQpKy+Y70DRwdRnDAtQ/vX6+D28gyIPbUpAVqmHSXBU67dyzqZa9kdx8rQdIddmCEZJVUF8D7hVCNAL3hv5GCNEghNAy8m4BPg3cHSGd/O+FEKeEECeBu4D/kuT1GENTUCa4Y8qLnNy6rurqoLaWPZRCQXKiY5TOkWlzOyLMR0tjnk5w6+gwdi4rZ0l5Ic/Pz1BbgOr118/34gtI89OAwykMhVJNECb3hDqCXOXma3lbPaZwpfvi6W7sNsG9m03qUxgJk4QuwEPbopQxtOxXVm3tVlPeJxJ7T/dQU5LPdcujhtGTp6DMFFkFKr45POXj0PzdGBagbMEISSkoKeWglPIDUsp1oceh0PNdUsqHQr/vl1IKKeX2+enkUspPSym3hV77oJZwsWBoVoEJQhfgke0NdAzPq12ZXb2lTpA8f6ILp92WWkGiCV0T5koIwSPb63m7cYDRqTArYwHiT3tO9VBfVsDOpeUpew8z56qkII87Irn5Wg5A1QYoTkHGJsoq33u6hxtXu6lwOVPyHkBSe0LNZ9uSMpZWFF6dzdeyX3kwUrSD9ZTXz74Lfdy/pQ6bLYV7TBW5TZNVd6yvpjjfwfMnwuZqgcoWjJDbnSTyy1RmzHTybitQRbt5dsHzJ8Isg5YDUFSVsuyhYFCy51Q3t6+voqwwRe49MFXoglrB+YOSl8KD2i37VffkFMWfxmd8vHmxnwe2pliQzFqbI6YM98j2enrGZuaaEgf80HYopVb5xd4JmgcmeSCV7j2YK/XwGN+BeD5CCB4OLXyGtWy+0Q4YvpxSofvmhX5mfEHzC5nnU1hh2v1XkGfn3s217D3TM9ebbwHKFoyS2wrKZlOmv0kfula7MrvalRIuv6lujhTFO95vH6ZrdIaHt6dYkJisoLYtKWO5u2gum29mDLreT6nQfeVsL15/kEe2N6TsPQDT5+oDITff7Fz1nFC1eykUus+f7MIm4IEtqRa65erRhKQSgEe3N+APqpgsMLeDQCrn6lQ3bpeT3atM2JE5FoVutZg2wdoE1a1kdNrHAW2n3ctvAiLlvQqNkNsKCpQwMSHwr/HIDq12ZVjVP413w+o7TRt/Ps+f7MbpsJm3n1E08ssAYZrQ1Va7B5pCq93WAyr+lMK5eu5EF0vKC7l2eXnK3gMwXUEV5zu4c301L54OLXxaUus2llLy3Ikubl5TRXVJfkreY5ZC85JvQGXzra528eyJTvVEy9spjT9Nevy8dq6Xh7bV4TBrG5JoFFaoDg9JNhbQuG19FSUFjrmFT/ObatuWohQrWgNYCspEvy7MBbWfP9kNzW+oJ1ffYdr44WjuvTvXV1OSquw9DZtNrXZNnKtHtqvalb1netRcOQpTFn8anvTyduMAj2xPYfaehskKCpRLtHfMw7ttw8oVWrkOSlKzKDnVOUrL4BQf3JFiSxPC4sDmKCghBB/c0cA7l4foGZ1JefzplbO9zPiCPLZzAZrjaN8rk5R5vsPOfZvreOlMD96pMbUz86rUyKpEsRRUYYVpNweooPadoaC2bH5D7f9Uscq08cM51jpM75gn9e49DRN94ACb60tZVeVSGWrNb8CKmyCvwLTxw3npTA/+oOTRhRC6s9mh5s3VBzbVku+wsedEh+r2nkJX6HMnusizC+5PtXsP5iwoE+fq0R0NSAn7jryX8vjTsye6aCgrSG32nobJSV2gPD7jM37OHt6rrLMUejASwVJQheZaUBBqyDg2TaD5LbUiSdGK/bkTXeQvhHtPw2RlrmXzNV1qVNuRrL7LtLHn89zJLlZVudjSkKLi3HBsduUSNSmuAsrNd9eGGlpO7gfPKKy63bSxwwkGJc+f7OaO9dWUFaXYKgfTrQKANdXFbGkopffkq+qJFCnz4Ukvb13s59EdDalNutGYtczNm6tb1qjkquHTr4I9P23qnzQsBWVSW5pw7tlUy7WOFhy+8ZStSGZ8AZ490cV9W+pS03svEilS5jeLU+qPFM1V18g0By8N8uiOhtS79zRMdoeCWu1unzmGRKRMmR9pGaJ7dGZhLE1IiTsU4IM7Glg5cohAYRXUbjN1bI09p7sXziqHlFibToeNB7bUUT94mMDS3ZBXaNrYZmApKBOr/jVc+Q4+XdcCwMzS1KzeXj7by+i0j0/sSt328VdhsosPYENtCQ8XX2BUlCJrt5g6tsbTx9oB+Nh1S1MyfkRSMFf3bq7l7rxTtOZvSFkg+6kjbZQUOLhv8wK49wAcTnCWmGpBATyyrZbbbSe5ULw7ZfGnp4+2s66meGGsckiZMv/Ixnw2ilYuFF1r6rhmYCmoWb/uiKnD3mk/zbngMl5oDpg6rsYvjrWzpLyQm9ekrlHoVaRA6ArgJnGat/ybOdGZfC3MfAJByS+OdXDr2iqWuVPX3+8qUjBX+b4xttHE81ObGYy1OV+CDE962XO6h49cs4RCp8kbXsaiyFzXMcCS6Qu4xQRPDq2fq/MxkVMdo5zoGOVTNyxfQKtcc4ea+726Pqg8GD/pXWnquGZgKagU+HWZHqa07yjvF+zmJ4dbzRs3RGPvOG83DvDxXcsWxvetUVihqv6DJirdnlMUefp5R+zgP1IwV29c6KNzZJpPXL+AliakxMVH8xvYCLLPv42fh6xCM/nlex14/UE+ecNy08eOSaHbdAuKpteQCF6Y3Bh7I8ME+enhVgrz7HxkIa1yh1Ntu2Hy98rWuJfpvAp+3lXN+Z7ktvMwG0tBpcJsbnoNIQOUbP8gx9tHIre1T4LvvHGJwjw7n75phanjxsXEHnOzXNgDCIq3PcKvj3fSMTxl2tBSSv759SaWlBcunMtKIwWxTc7vgUI3JWtv4gdvX2baa95CYcYX4F/fbmb3Kjcb6xbIZaVhcqkHABf3QsM1uNy1/GB/c+zdrg3SOzbDr4938qFrGlLXnDkaJicqEfBB48vYNjxAnsPB995sNm9sE7AUVAqyiLiwB1zV3HPPQ9SU5PP3e8+bdoO0D03xmxNd/PYNy3GnskdaJFKhzM+/AMt289n7rkcIwT+/1mTa0G81DnC8fYQv3rUWp2OBv+qai88swRjwwcWXYMOD/Mk9Gxic9PIf75hncf70cCu9Yx7+yz3rTRtTN2YL3dFO6HwXsekRvnDHGt5rG+Hl+Q1kk+AbrzYSlJI/vnOtaWPqxmzXcdshmBklf8sjfO7mlfzqeGdaWVELlP6VxphdWxDwQeOrsOlRCguc/Ok96/irX53mpTO9ETtoD096+eV7Hbx6rpeRKR8b6kp4aFs992yqxT7PfSel5P96/ix5dsEf3LbanOs1gtkKaqQdek7CPX9LfVkhv717OT853Mrv3roy4iq+b2yGnx5u5Z3LQ0x4/OxYVs5jOxq4YfXVcThfIMj/2HOOhrICfuu6BSiinE9hheqM4Rmbq4tKhpZQevnGR7huhZtb1lby7X1NfPiaJVQWX93tobF3nF+828E7l4cQwLXLK/jE9cvYEGGL+6FJL9954xK3rK3kpoWMaWqY7eI7/4J63Pgon3Av40cHWvjai+e5a0NNxIXKsZYhfvV+J++3jZCfZ+O2ddV87LqlEWOWjb3jPH2snU/fuGJhY5oaJne+4cKLKr18zV380Yo8fnakjf+x5zw/+t3rr4qtBYOSfRf6ePZEFxd6xikvyuOuDTU8tK0+ZXNhWVBmx6CaXlWCZNMjAHx81zI21pXwX391ipaBydnDPP4A33vrErf/wz7+7oVzjE77WVJeyNuNA/zhT97lnv/vTZ4+2o7XPxfg/dHBFl4+28tX7llPXVlqClpjYra1ef559bjxYQC+/IF1VBQ5+ZOfvX/Fnj5jMz6+/tIF7viHN/j2G5eY8QWoLM7n2eNdfOJ7h/md77/DibD9kjRFfr5nnK9+cAv5jgUM+GsUhQT91GDs4/Ry/nnIK4I1Kr38q49uYdIT4Cs/P47HP+fq6xmd4S/+8yT3f+MtfnSghQKHjXyHjf94p5X7v/EWX/rZe7QOzn0PfYEgf/b0ccZmfPzVQ5vNuVajFLnNjW2ee1Z1eq9ej8Nu468e3sTlgUn+5tkzV3gyLvaO8/s/OspHv3uIX73fSVVJPjYh+OfXG7nr62/wvz9ziq6R6dnjR6d9/MmT71NWmMeX7l4E6wnMdYcGA3DmV7DmbnC6KC9y8pV71vPmxX6+//blKw492jLEh79zkN//8THeutjPkvJCRqf9/I8Xz/PGxX5zricClgWVXwrCbt6HfuIpJZzW3gNAnt3Gt377Wj723YN85DsH+exNK/EGAjx9rIP+cQ93bajmLx7cOGsxBIKSl8/08K19Tfz5L0/yj69e5PHrl9M6NMkz73Vyz6ZanlgM6wnMV+anfqH2nqlaB4Db5eSbn9zJ5354lMe+fYBP7l5O98g0z7zfyfiMn0d3NPBn965nZZULUHGTnx5u5V/euMRj3z7AvZtruXF1Jfsb+9l3oZ/P37qK+xaiG0IkiqrU4+QguJP8vAI+OPNrWHfvbJ3KutoS/u5DW/nzX57kY989xAd3NHCma0w1KpaSz928ii/dvXbWDTwy5eX7b1/mB/sv89KZHj58zRLW15bw3MluTrSP8N8/vJXNC5UuPZ9CNyBVzC7Z7esn+qH1INz6ldmn7txQwx/duYbvvHGJzpFp7lhfzZHLg7x8tpdip4O/eGAjn7t55WzmYvfoNN994xI/O9LGL9/t4KO7lrLCXcRTR9vpGJ7ih5+7nqoIVuuCYKY79PKbqlfoA1+bfep3b17JsZYh/vuec5zpGmXrkjJeOdvLO5eHqCst4Osf28FjOxvIC/UdbB+aojSFuyhYCkoI88zm6WFlMu/6XbDPfWhra4r5xRdu4r/+6jT/+OpFhIBb11bxT5/Yyc1rq64Ywm4TPLitnge21vHmxX7+Zd8l/vHVixTk2fj8rav48wc2LmzmXjgm7qrLQBN0vgv3/d0VT9+8por/+IMb+D9+dZqvvXiePLvaKfUPblvN1iVXusoK8ux8/rbVPL57Of/6VjM/OdzKK2d7KSvM468e2sTnb0tNiylduDQFZcLqsulVmBqAHZ+84umPX78MV76D/3vPOf7uhXOUFDj4reuW8kd3rLnK5VJe5OR/vX8Dn7lpBd94rZHfvN/J094O6ssK+KfHdy5ML7lohPfjS1ZBnfqFcq1u+/gVT//5/RuoLs7nm6838tbFfiqK8vjinWv5vVtXXRXLrS8r5G8f28of3L6ab73exH8e68AbCLKupph//70bFscNqqHFoILB5Ou7TvxcuZ/XPzD7lM0m+KfHr2H5yxf4yeFWfn1cNVj+q4c28akbl1PkvFJlpNzNKaXMuJ/rrrtOmso/75Ly559JfpyjP5Tyb0ql7Hg36iFj01456fEZGnZ40iM9vkCyV5c8gYCUf+uW8pWvJj/W6/9dyr8pk3K0M+LLwWBQDk965IzPb+DygnJwwiP9gWDy15csw63qu/Duj5Mf66nfkfL/WS2l3xvx5WAwKIcmPNLr1/8d8fkDcnDCI4PBNJiriy+ruWp7J/mxvnOLlP/zjqgv+wNBOTA+IwMGviMzPr8cnkyTuTrwz2qupkeSG2dmXMq/q5Py2S9HPcTjCyzY/w0ckxFkvWVBQShIa0Ks4MRTyvfdcE3UQxLpOl5etMDZetGw2ZTrKlmrQEo4+bTqJ1cauU2MEMLw/22ziYXPbIzGrItvILlxpoZUyvT1n7/CKg9HCGF411uH3ZY+c2XWlhs9p6HnFDz491EPsdtExKSSWOQ77IsTx4yEZm1ODiSXfHPuOfBNXWWVh+N02HA6Fvc7YiVJgNo2O1mhO9QM7Ydhx+Mpaw6bFhRXJy90O46pLtPbP2HONaUjziLIcyU/V2eegYA3piDJeIpMim2eeBJsebD1o8lfU7riqlGPyX6vTjwJFSth2Q1JX1IqsRQUqA99oi+5MU78HBCw/eNxD81oXCYo85NPgaMANj1qzjWlK65KFTtKhuNPQs0WlUySrWgZj8kI3YBfWeXr708+jpXOFFerx8kk5NVoB1x+Sy160nwxbSkogOIatXpLtGGslErorrodyhaw9clikKyC8s3Aqf9UyqlgkbLGFopk52qgETqPwc70FyRJkV+qanGSEbqXXlfnZ7OlCXMWVDIL6pNPAzIjPBiWgoKwjKsEV3Dt78BwS/bfHBASukmsdC++qPZJ2vnbpl1S2lJUldxcHf8ZCNtVGWlZhxBQXKtSxBPlxJMqlrXuPvOuKx1JNjtUShUrX34TuBcxy1UnSSkoIYRbCPGKEKIx9BhxW0khRIsQ4pQQ4rgQ4pjR81POrF83wVXJiSdVEWW2u6xA3SC+SfBOxj82EsefhNIlabe1dEpwVSeefBMMwsmfw5oPpGxr97SiuBomEmxHND2iukds+6hqqJrN2PNUqnmiFlTX+zBwQcXKM4BkLai/BF6TUq4DXgv9HY27pJQ7pZS7Ejw/dRRrCiqBVYlvBk7/CjZ9EPKLzb2udMSl+cATsAzGe1RNz/ZPqF1nsx1XpfpOJdKPr3U/jHVmjCBJmuLaxK2Cs7+BgCd35spVk/hcnXhKuVM3f8jUS0oVySqox4Afh37/MfChBT7fHDShm4iLoekV1doo25MjNJJRUCefVkWUueDeA+XiC3jBk8A+V6d+obZW2PCQ+deVjriSsKBO/hwq10FD+m24lxKKE1RQAb/KCt3wgNoOJgNIVkHVSim7AUKPNVGOk8DLQoh3hRBPJHA+QognhBDHhBDH+vtN7v3kSiIz5vQvlSDKBZcVJO4Dl1LFVJbunm1tlPXMfq8MzpXfo6yCjY+odPVcoLhWuUON9uMbboXWA7DjE9mdSBKOqyoxF1/L2+q7mEFp+HEVlBDiVSHE6Qg/jxl4n1uklNcCDwJfFELcbvRCpZTfk1LuklLuqq6uNnp6bPJLVNqz0Q/dMwEX9sLmx8CeIzXPiSrznpPQf05lpOUKmjI3GodqelU1T932MfOvKV0prgEZNG6Zn3paPWZARpppJOriO/1LZZWvu9f8a0oRcaWqlPKeaK8JIXqFEPVSym4hRD0QUWpJKbtCj31CiF8Bu4G3AF3npxwhQh+6wZvj4l7wT8PW30rNdaUjRQlaUGd/o5rybjKyrslwEs0OPfULNc+rc8Qqh7A4cJ+xpJCTv4AVt0D5Au8CvJgUV6ttXHwzkKdzVwO/V3WP2PjwbMPhTCBZF9+zwGdDv38W+M38A4QQLiFEifY7cB9wWu/5C0ZxtXGr4PQzUFKvUjZzBWeRWoUZEbpSqm7cq27L7iLK+SSizD3jquHwlg9HbW2UlRSHlJKROFT/RZWRtuXDqbmmdMWVQFJX8z5V3pFhi+lkFdTXgHuFEI3AvaG/EUI0CCH2hI6pBfYLIU4AR4AXpJR7Y52/KLhqjCVJzIyqBIktH06+q3Cm4TLYj6/3DAxdUq7QXEKzCowI3eY3wD8DWz6UiitKX2YTlQwsEs8/px5D+4nlDMUJlMWc/iUUlMPqu1JySakiqcCJlHIQ+ECE57uAh0K/NwM7jJy/KLiqoOs9/cc3vaYytHJN6EIo48rAzXHuOVVwuvGR1F1TOuLIV3M12qH/nKZXwVmS9j3STGfWgjL4vVpyXdSGw1mL0azjYAAuvqQyQjOsTizHlv4xKA7FoILB+McCXHoN8stgya74x2YbJXXGrIKmV5UgKY6apJm9lC5R9Ux6kBKaXlexp1xy74GqIcwr0q+gRjtV0WkuFMfPx2h2aOd7yr23Nj1sASNYCkqjuFbV6OjJuLpCkORI9l44JQ0w1qXv2KkhZZmuybybwxRKl+ifq4FGGG3LSEFiCsU1+t1Wl15Tj+vuT931pCuzruMefcdfeh0Qamv3DMNSUBqam0DParf/Aox35a4gKW1QWUR6ClAvv6nShzPw5jCFsiVqta+HplfVY64q8+Ja/Zb5pddVglLNptReUzqSV6j6Dupd+Fx6Te1Rp+0llUFYCkpjVkHp+NC11VuuCpLZueqOf2yT5gq9LrXXlK6ULlGdRvQo80uvqY4IFStSf13pSEmdaocVj2BAJZOsvit3inPnU6pz4TM9ovZfy9DFtKWgNEpD22TosaCaXoOq9VC+LLXXlK6U1KvH8TjKXEq4tA9W356brlBQggTiL3x809CyH9ZGLTvMfsqWwUh7/N6F3Sdgejh3rXJQlrmexfTlN1XoIkMX05aC0nBVq9044yko37RqrZLLN4dea3PgIox1ZOzNYQplIQUVL5Ov9aBKL8/Qla4plC1Vhe/xtn6/9Lp6XH1nyi8pbSldou6teFx6XWWFLs3MZC5LQWnYbFBaH99s1gRJLgvdUp1CVxMkazKr9sJU9MY2m15TXaZX3JL6a0pXtM0+R9tjH3dpH9Rtn9tdNhcpW6KsSO9U9GOyICvUUlDhlC7VJ3TtTliZw4IkrwCK61Sjzlg0vQbuNVCxckEuKy0paQBEfGuz6VVYcXPuNIeNxKyCinEPesbVBqG57MGAuZBErLkabFJZoRk8V5aCCqdipdoZNxaXXletjZyuhbii9KViBYzEUFB+TyimksOWJqjCyOKa2IJkpF217Mnl+BOoGBTEtqBaDkDQl9tWOcwt+mLJq6ZQMlcG34OWggrHvUoF/n3TkV8f64K+sxn9gZtG+YrYFlTbIRVPyODVm2mUxqkbu5T5gsQUiipVn8dYQvfS6+AohGU3LthlpSWzCupy9GMuvZ7xHgxLQYVTsUo9RhO8szEVS+hSsUIFaQO+yK9fel0lnay8bWGvKx0pXx5/pVu6BKo3LtglpSVCqEXi4KXoxzTvU+51vV28s5XiGshzwVAUBeX3qP2fMlxWWQoqnHhmc9NrqpiwdutCXVH6UrFSFeCOtEV+/dLrqp9cfvGCXlZaUrlOfaf83qtfC/ih+U1lPeVqTU847jUw1Bz5tZF2lRma4ULXFISIHZJoOwy+qYy3yi0FFY57tXocirCCCwbU6m3N3ZYgAajaoB4HLl792kQf9JyCtZYgAdQOwjIQWZh0HlOFvLmcFRpO5RoV2wz4r36teZ96tBSUwr0qsqyCrPFgWAoqHFelqofqO3v1a93HQ8WBliABoHq9euw/f/VrlyxBcgWVoS3uBxuvfq3pVbWRYy7X9IRTuRaC/sjKvPEVVSSe665QjeqNyh3q91z92qXXYPmNGe/BsBTUfGo2Qd+5q5+/+JLaMsISuoqCMpVC3X/h6teaXlEB77qIu6zkHlVr1WPEuXpVFVEWli/oJaUtNZvVY+/pK5/3e9XCZ919lgdDo3azssznezFGO0MejMzPCrUU1HxqtkDf+au33biwR8VUcmlH2HjUbFSbEYbj98LFl2H9g7m3kWM0CspU1mP3iSufH+tSW0asu3dxrisdqd4INocSsOG0HQTvOKzPwe7l0ajZoh5753l8Lr6oHjc8tLDXkwIsCTKf2i3gm1RFbhoj7eqGWf/A4l1XOtJwjXKHhlezt+5XMZVc2+U0Hg3XKGUUzrnn1eOmDy789aQreQWqz+V8BXXxZdVpY9Udi3Nd6UjlGjUn8xc+F15U8fSqdYtzXSZiKaj5LA/VV7QdmnvuYmiH+ixYkZjK0utVvCD8Bjm/R208l+uFlPNp2KmC/5Nh+42de1Ylm1RvWLTLSksaroGOo3NeDCmVVbDqtoyPqZiKPU+5h8NllWcCLr+lZFUWuEItBTWfyrUqUSL8Qz/za/V8FqxITEXbTbjtoHoMBuD8CypOl1e4eNeVjiy/WT1efkM9Tg6opsObLevpKlbdDtND0BuyorreU6nnubh7bjyW36QWiJ4J9feFFyHgzZrFtKWg5iOESs1sfFkVoQ5eUm6rnb+dFSsSUymuhoZr51xVja+oThzbPra415WOLN0FhRXKVQVw4ilVR7b5Q4t6WWmJ5sbTNnB87yfKlWXN1dWsul0lSjS9ov5+78cq3rn8psW9LpOwFFQktn9Cbf1+YQ+8+ffgKICdn1rsq0pPNj+mVrg9p+Htr6s0YCv+dDU2u1rVnn9eFTcf/hdYcSvUWUXfV1FaryzOd3+suroc/xnseNzKdIzEyltVNu17/w6th1T3iF2/lzUJStnxX5jN2g8ol97Tn4GTT8ENX1C7fVpczbWfUZbBd29RcYMP/HXGtvZPOTd/GbyT8I1tKoPv7v9jsa8ofbnpj1XM7p+2q6y+2/6Xxb6i9MRmhxueUIW5//aAUla7n1jsqzKNpBSUEMIthHhFCNEYeqyIcMwGIcTxsJ8xIcRXQq99VQjRGfZaejhO7XnwiZ/C2nvhxj+2BEksitzw0X9Thab3fBV2fHKxryh9qdkIH/lX5UL+8HdhRXa4YVLCxkfgvr9TLqzH/yOjG56mnJu/DDf8kZJXn34mq7ZsETLe9sqxThbi74EhKeXXhBB/CVRIKf8ixvF2oBO4QUrZKoT4KjAhpfy6kffdtWuXPHbsWMLXbWFhYWGRPggh3pVSXrXtb7IuvseAH4d+/zHwoTjHfwC4JKWMs9OdhYWFhUWuk6yCqpVSdgOEHmviHP848OS8574khDgphPhhJBehhhDiCSHEMSHEsf7+/uSu2sLCwsIi7YmroIQQrwohTkf4eczIGwkhnMAHgV+EPf0dYA2wE+gG/t9o50spvyel3CWl3FVdXW3krS0sLCwsMhBHvAOklFE7DgoheoUQ9VLKbiFEPdAXY6gHgfeklL1hY8/+LoT4V+B5fZdtYWFhYZHtJOviexb4bOj3zwK/iXHsJ5nn3gspNY0PA/NaGFtYWFhY5CrJKqivAfcKIRqBe0N/I4RoEELs0Q4SQhSFXn9m3vl/L4Q4JYQ4CdwF/Jckr8fCwsLCIkuI6+KLhZRyEJWZN//5LuChsL+ngKv2qZBSfjqZ97ewsLCwyF6sThIWFhYWFmmJpaAsLCwsLNKSpDpJLBZCiH4g2WLfKmDAhMvJBay50o81V/qw5kk/uTBXK6SUV9UPZaSCMgMhxLFIrTUsrsaaK/1Yc6UPa570k8tzZbn4LCwsLCzSEktBWVhYWFikJbmsoL632BeQQVhzpR9rrvRhzZN+cnaucjYGZWFhYWGR3uSyBWVhYWFhkcZYCsrCwsLCIi3JOgUlhHhACHFBCNEU2uV3/utCCPHN0OsnhRDX6j0320hyrn4ohOgTQuREg99E50oIsUwIsU8IcU4IcUYI8acLf/ULSxJzVSCEOCKEOBGaq79d+KtfWJK5B0Ov24UQ7wshsnMnCCll1vwAduASsBpwAieAzfOOeQh4ERDAjcA7es/Npp9k5ir02u3AtcDpxf5f0nmugHrg2tDvJcBF63sVda4EUBz6PQ94B7hxsf+ndJyrsNf/F+BnwPOL/f+k4ifbLKjdQJOUsllK6QWeQm1LH85jwL9LxWGgPLTth55zs4lk5gop5VvA0IJe8eKR8FxJKbullO8BSCnHgXPAkoW8+AUmmbmSUsqJ0DF5oZ9szuJK6h4UQiwFHga+v5AXvZBkm4JaArSH/d3B1cIg2jF6zs0mkpmrXMOUuRJCrASuQVkG2UpScxVyWR1HbX76ipTSmqvox3wD+HMgmKLrW3SyTUGJCM/NX4FFO0bPudlEMnOVayQ9V0KIYuCXwFeklGMmXlu6kdRcSSkDUsqdwFJgtxBiq7mXl1YkPFdCiEeAPinlu+ZfVvqQbQqqA1gW9vdSoEvnMXrOzSaSmatcI6m5EkLkoZTTf0gp52/amW2Y8r2SUo4AbwAPmH6F6UMyc3UL8EEhRAvKNXi3EOKnqbvURWKxg2Bm/qA2YGwGVjEXdNwy75iHuTLoeETvudn0k8xchb2+ktxIkkjmeyWAfwe+sdj/RwbMVTVQHvq9EHgbeGSx/6d0nKt5x9xJliZJJLWjbrohpfQLIb4EvITKkPmhlPKMEOILode/C+xBZcY0AVPA78Y6dxH+jQUhmbkCEEI8iboxqoQQHcDfSCl/sLD/xcKQ5FzdAnwaOBWKrQD8VynlngX8FxaMJOeqHvixEMKO8u48LaXMzvRpkr8HcwGr1ZGFhYWFRVqSbTEoCwsLC4sswVJQFhYWFhZpiaWgLCwsLCzSEktBWVhYWFikJZaCsrCwsLBISywFZWGxQAghKoUQx0M/PUKIztDvE0KIf1ns67OwSDesNHMLi0VACPFVYEJK+fXFvhYLi3TFsqAsLBYZIcSd2n4+QoivCiF+LIR4WQjRIoT4iBDi74UQp4QQe0NtkxBCXCeEeFMI8a4Q4iWtw7WFRTZhKSgLi/RjDarFzWPAT4F9UsptwDTwcEhJ/TPwUSnldcAPgf++WBdrYZEqsqrVkYVFlvCilNInhDiFaoGzN/T8KVT/ww3AVuAVIQShY7oX4TotLFKKpaAsLNIPD4CUMiiE8Mm5QHEQdc8K4IyU8qbFukALi4XAcvFZWGQeF4BqIcRNoLbzEEJsWeRrsrAwHUtBWVhkGFJtD/5R4P8RQpwAjgM3L+pFWVikACvN3MLCwsIiLbEsKAsLCwuLtMRSUBYWFhYWaYmloCwsLCws0hJLQVlYWFhYpCWWgrKwsLCwSEssBWVhYWFhkZZYCsrCwsLCIi35/wEkzkLgQMAycQAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "phi = 1.5\n",
    "amps2 = amps * np.exp(1j * phi)\n",
    "ys2 = synthesize2(amps2, freqs, ts)\n",
    "\n",
    "n = 500\n",
    "plt.plot(ts[:n], ys.real[:n], label=r'$\\phi_0 = 0$')\n",
    "plt.plot(ts[:n], ys2.real[:n], label=r'$\\phi_0 = 1.5$')\n",
    "decorate(xlabel='Time')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Rotating all components by the same phase offset changes the shape of the waveform because the components have different periods, so the same offset has a different effect on each component."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Analysis\n",
    "\n",
    "The simplest way to analyze a signal---that is, find the amplitude for each component---is to create the same matrix we used for synthesis and then solve the system of linear equations."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "def analyze1(ys, freqs, ts):\n",
    "    args = np.outer(ts, freqs)\n",
    "    M = np.exp(1j * PI2 * args)\n",
    "    amps = np.linalg.solve(M, ys)\n",
    "    return amps"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Using the first 4 values from the wave array, we can recover the amplitudes."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.6 +0.j 0.25-0.j 0.1 +0.j 0.05-0.j]\n"
     ]
    }
   ],
   "source": [
    "n = len(freqs)\n",
    "amps2 = analyze1(ys[:n], freqs, ts[:n])\n",
    "print(amps2)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "If we define the `freqs` from 0 to N-1 and `ts` from 0 to (N-1)/N, we get a unitary matrix. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[ 1.+0.j  1.+0.j  1.+0.j  1.+0.j]\n",
      " [ 1.+0.j  0.+1.j -1.+0.j -0.-1.j]\n",
      " [ 1.+0.j -1.+0.j  1.-0.j -1.+0.j]\n",
      " [ 1.+0.j -0.-1.j -1.+0.j  0.+1.j]]\n"
     ]
    }
   ],
   "source": [
    "N = 4\n",
    "ts = np.arange(N) / N\n",
    "freqs = np.arange(N)\n",
    "args = np.outer(ts, freqs)\n",
    "M = np.exp(1j * PI2 * args)\n",
    "print(M)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "To check whether a matrix is unitary, we can compute $M^* M$, which should be the identity matrix:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[ 4. -0.  0.  0.]\n",
      " [-0.  4. -0.  0.]\n",
      " [ 0. -0.  4. -0.]\n",
      " [ 0.  0. -0.  4.]]\n"
     ]
    }
   ],
   "source": [
    "MstarM = M.conj().transpose().dot(M)\n",
    "print(MstarM.real)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The result is actually $4 I$, so in general we have an extra factor of $N$ to deal with, but that's a minor problem.\n",
    "\n",
    "We can use this result to write a faster version of `analyze1`:\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [],
   "source": [
    "def analyze2(ys, freqs, ts):\n",
    "    args = np.outer(ts, freqs)\n",
    "    M = np.exp(1j * PI2 * args)\n",
    "    amps = M.conj().transpose().dot(ys) / N\n",
    "    return amps"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.6 +0.j 0.25-0.j 0.1 -0.j 0.05-0.j]\n"
     ]
    }
   ],
   "source": [
    "N = 4\n",
    "amps = np.array([0.6, 0.25, 0.1, 0.05])\n",
    "freqs = np.arange(N)\n",
    "ts = np.arange(N) / N\n",
    "ys = synthesize2(amps, freqs, ts)\n",
    "\n",
    "amps3 = analyze2(ys, freqs, ts)\n",
    "print(amps3)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now we can write our own version of DFT:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [],
   "source": [
    "def synthesis_matrix(N):\n",
    "    ts = np.arange(N) / N\n",
    "    freqs = np.arange(N)\n",
    "    args = np.outer(ts, freqs)\n",
    "    M = np.exp(1j * PI2 * args)\n",
    "    return M"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [],
   "source": [
    "def dft(ys):\n",
    "    N = len(ys)\n",
    "    M = synthesis_matrix(N)\n",
    "    amps = M.conj().transpose().dot(ys)\n",
    "    return amps"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "And compare it to analyze2:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[2.4+0.j 1. -0.j 0.4-0.j 0.2-0.j]\n"
     ]
    }
   ],
   "source": [
    "print(dft(ys))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The result is close to `amps * 4`.\n",
    "\n",
    "We can also compare it to `np.fft.fft`.  FFT stands for Fast Fourier Transform, which is an even faster implementation of DFT."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[2.4+0.j 1. -0.j 0.4-0.j 0.2-0.j]\n"
     ]
    }
   ],
   "source": [
    "print(np.fft.fft(ys))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The inverse DFT is almost the same, except we don't have to transpose $M$ and we have to divide through by $N$."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [],
   "source": [
    "def idft(amps):\n",
    "    N = len(amps)\n",
    "    M = synthesis_matrix(N)\n",
    "    ys = M.dot(amps) / N\n",
    "    return ys"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We can confirm that `dft(idft(amps))` yields `amps`:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.6 +0.j 0.25-0.j 0.1 -0.j 0.05-0.j]\n"
     ]
    }
   ],
   "source": [
    "ys = idft(amps)\n",
    "print(dft(ys))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Real signals\n",
    "\n",
    "Let's see what happens when we apply DFT to a real-valued signal."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "                <audio  controls=\"controls\" >\n",
       "                    <source src=\"data:audio/wav;base64,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\" type=\"audio/wav\" />\n",
       "                    Your browser does not support the audio element.\n",
       "                </audio>\n",
       "              "
      ],
      "text/plain": [
       "<IPython.lib.display.Audio object>"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from thinkdsp import SawtoothSignal\n",
    "\n",
    "framerate = 10000\n",
    "signal = SawtoothSignal(freq=500)\n",
    "wave = signal.make_wave(duration=0.1, framerate=framerate)\n",
    "wave.make_audio()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "`wave` is a 500 Hz sawtooth signal sampled at 10 kHz."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(1000, 1000)"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "hs = dft(wave.ys)\n",
    "len(wave.ys), len(hs)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "`hs` is the DFT of this wave, and `amps` contains the amplitudes."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "amps = np.abs(hs)\n",
    "plt.plot(amps)\n",
    "decorate(xlabel='Frequency (unspecified units)', ylabel='DFT')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The DFT assumes that the sampling rate is N per time unit, for an arbitrary time unit.  We have to convert to actual units -- seconds -- like this:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [],
   "source": [
    "N = len(hs)\n",
    "fs = np.arange(N) * framerate / N"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Also, the DFT of a real signal is symmetric, so the right side is redundant.  Normally, we only compute and plot the first half:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(fs[:N//2+1], amps[:N//2+1])\n",
    "decorate(xlabel='Frequency (Hz)', ylabel='DFT')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's get a better sense for why the DFT of a real signal is symmetric.  I'll start by making the inverse DFT matrix for $N=8$."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [],
   "source": [
    "M = synthesis_matrix(N=8)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "And the DFT matrix:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [],
   "source": [
    "Mstar = M.conj().transpose()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "And a triangle wave with 8 elements:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ 1. ,  0.5,  0. , -0.5, -1. , -0.5,  0. ,  0.5])"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from thinkdsp import TriangleSignal\n",
    "\n",
    "wave = TriangleSignal(freq=1).make_wave(duration=1, framerate=8)\n",
    "wave.ys"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Here's what the wave looks like."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "wave.plot()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now let's look at rows 3 and 5 of the DFT matrix:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[ 1.   -0.j    -0.707-0.707j -0.   +1.j     0.707-0.707j -1.   -0.j\n",
      "  0.707+0.707j  0.   -1.j    -0.707+0.707j]\n"
     ]
    }
   ],
   "source": [
    "row3 = Mstar[3, :]\n",
    "print(row3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ 1.   -0.j   , -0.707+0.707j,  0.   -1.j   ,  0.707+0.707j,\n",
       "       -1.   -0.j   ,  0.707-0.707j, -0.   +1.j   , -0.707-0.707j])"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "row5 = Mstar[5, :]\n",
    "row5"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "They are almost the same, but row5 is the complex conjugate of row3."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [],
   "source": [
    "def approx_equal(a, b, tol=1e-10):\n",
    "    return np.sum(np.abs(a-b)) < tol"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "True"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "approx_equal(row3, row5.conj())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "When we multiply the DFT matrix and the wave array, the element with index 3 is:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(0.5857864376269053-1.322063213371145e-16j)"
      ]
     },
     "execution_count": 40,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X3 = row3.dot(wave.ys)\n",
    "X3"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "And the element with index 5 is:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(0.585786437626906-5.534107762827377e-16j)"
      ]
     },
     "execution_count": 41,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X5 = row5.dot(wave.ys)\n",
    "X5"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "And they are the same, within floating point error."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "7.881290833695066e-16"
      ]
     },
     "execution_count": 42,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "abs(X3 - X5)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's try the same thing with a complex signal:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.    0.125 0.25  0.375 0.5   0.625 0.75  0.875]\n",
      "[0.    0.785 1.571 2.356 3.142 3.927 4.712 5.498]\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x7f335b48db50>]"
      ]
     },
     "execution_count": 43,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "wave2 = ComplexSinusoid(freq=1).make_wave(duration=1, framerate=8)\n",
    "plt.plot(wave2.ts, wave2.ys.real)\n",
    "plt.plot(wave2.ts, wave2.ys.imag)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now the elements with indices 3 and 5 are different:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(1.7763568394002505e-15-2.6522243254460964e-16j)"
      ]
     },
     "execution_count": 44,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X3 = row3.dot(wave2.ys)\n",
    "X3"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(-2.220446049250313e-16+4.0860826919976536e-16j)"
      ]
     },
     "execution_count": 45,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X5 = row5.dot(wave2.ys)\n",
    "X5"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Visually we can confirm that the FFT of the real signal is symmetric:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x7f335b3f7b50>]"
      ]
     },
     "execution_count": 46,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "hs = np.fft.fft(wave.ys)\n",
    "plt.plot(abs(hs))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "And the FFT of the complex signal is not."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x7f335b4b69a0>]"
      ]
     },
     "execution_count": 47,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "hs = np.fft.fft(wave2.ys)\n",
    "plt.plot(abs(hs))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Another way to think about all of this is to evaluate the DFT matrix for different frequencies.  Instead of $0$ through $N-1$, let's try $0, 1, 2, 3, 4, -3, -2, -1$."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [],
   "source": [
    "N = 8\n",
    "ts = np.arange(N) / N\n",
    "freqs = np.arange(N)\n",
    "freqs = [0, 1, 2, 3, 4, -3, -2, -1]\n",
    "args = np.outer(ts, freqs)\n",
    "M2 = np.exp(1j * PI2 * args)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "True"
      ]
     },
     "execution_count": 49,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "approx_equal(M, M2)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "So you can think of the second half of the DFT as positive frequencies that get aliased (which is how I explained them), or as negative frequencies (which is the more conventional way to explain them).  But the DFT doesn't care either way.\n",
    "\n",
    "The `thinkdsp` library provides support for computing the \"full\" FFT instead of the real FFT."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {},
   "outputs": [],
   "source": [
    "framerate = 10000\n",
    "signal = SawtoothSignal(freq=500)\n",
    "wave = signal.make_wave(duration=0.1, framerate=framerate)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {},
   "outputs": [],
   "source": [
    "spectrum = wave.make_spectrum(full=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "spectrum.plot()\n",
    "decorate(xlabel='Frequency (Hz)', ylabel='DFT')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.12"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
